小编Fel*_*aes的帖子

实时数据和2向数据绑定:未调用自定义设置器

我正在使用2-way数据绑定,使用EditText中设置的字符串从ViewModel中更新LiveData String对象:

<android.support.design.widget.TextInputEditText
  android:id="@+id/writeReviewTitle"
  android:layout_width="match_parent"
  android:layout_height="wrap_content"
  android:text="@={viewModel.liveReviewTitle}"
/>
Run Code Online (Sandbox Code Playgroud)

因此,据我了解,每次EditText中的文本更改时,都会更新ViewModelliveReviewTitle属性。我认为这是通过使用TextWatcher或库正在照顾我的某种侦听机制来实现的。我还认为,当文本需要更新时,就会setter调用它。似乎并非如此!当文本的变化,我需要做一些更多的东西在我的ViewModel,所以我实现了自定义setterliveReviewTitle,但它没有被调用(我试过调试)。这是在ViewModel课堂上的样子:

var liveReviewTitle: MutableLiveData<String> = MutableLiveData()
        set(value) {
            field = value
            customLogicHere()
        }
Run Code Online (Sandbox Code Playgroud)

尝试调试此,setter但似乎从未被调用!这是怎么回事 感到有些困惑。文本将被更新,并保存在中ViewModel,只是setter不被调用。

data-binding android kotlin android-databinding android-livedata

8
推荐指数
2
解决办法
4938
查看次数

Kotlin数据类中的函数作为参数导致包裹错误

我在Kotlin帽子中有一个数据类,它正在使用@Parcelize注释进行简单的包裹。现在,我想将一个函数传递给此类,并且我真的不知道如何在打包期间不考虑该函数。

这是我的数据类:

@Parcelize
data class GearCategoryViewModel(
        val title: String,
        val imageUrl: String,
        val categoryId: Int,
        val comingSoon: Boolean,
        @IgnoredOnParcel val onClick: (gearCategoryViewModel: GearCategoryViewModel) -> Unit
) : DataBindingAdapter.LayoutViewModel(R.layout.gear_category_item), Parcelable
Run Code Online (Sandbox Code Playgroud)

我尝试使用@IgnoredOnParcel,并@Transient没有成功。

这是我得到的编译错误:

错误:(20,39)'Parcelize'不直接支持类型。如果希望使用“ writeValue()”序列化参数类型,请使用“ @RawValue”注释参数类型

而且此@RawValue注释也不起作用。

lambda android kotlin kotlin-android-extensions

6
推荐指数
2
解决办法
2630
查看次数

Android Fullscreen Fragment对话框错误

我创建了一个"全屏"DialogFragment,其中我添加了一个透明黑色背景.最终结果可以在下面的截图中看到:

在此输入图像描述

这是我如何做到的:

@Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        Dialog dialog = super.onCreateDialog(savedInstanceState);
        dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        return dialog;
    }



    @Override
    public void onStart() {
        super.onStart();
        Dialog dialog = getDialog();
        if (dialog != null) {
            dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        }
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            // if >= LOLLIPOP, then I color the the statusbar
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            dialog.getWindow().setStatusBarColor(SOME_COLOR_HERE);
        }

    }

@Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NO_TITLE, R.style.DialogFullScreen);
    }
Run Code Online (Sandbox Code Playgroud)

这是我在setStyle()上设置的主题:

<style name="DialogFullScreen">
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowContentOverlay">@null</item>
</style>
Run Code Online (Sandbox Code Playgroud)

这是我为片段扩充的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-fragments nexus-4

5
推荐指数
1
解决办法
560
查看次数

单击时,RecyclerView项目的X和Y为0

在a中RecyclerView,我试图获得点击项目的X和Y位置.这是在我的适配器内:

@Override
    public void onBindViewHolder(AlfabetoViewHolder holder, final int position) {
       // setImage(holder.imageButton, images.get(position));

        holder.imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                view.getX(); // This is 0, but it shouldn't be!
                view.getY(); // This is also 0.
                executaSomAnimacaoLetra(sounds.get(position), Utils.getResourceFromFile(popups.get(position), context), view); // I do some stuff here
            }
        });


    }
Run Code Online (Sandbox Code Playgroud)

事实是,X和Y都总是返回0,他们不应该.我需要点击项目的X和Y来做一些动画.

我已经尝试将X和Y位置放在一个内部和一个OnGlobalLayoutListener内部OnPreDrawListener(当你需要活动的onCreate上的X和Y时它们都工作),但它们也返回0.

我正在使用GridLayoutManager我的RecyclerView:

recyclerView.setLayoutManager(new GridLayoutManager(Activity_alfabeto.this, 7, LinearLayoutManager.VERTICAL, false));
Run Code Online (Sandbox Code Playgroud)

任何帮助表示赞赏.

android recycler-adapter android-recyclerview

3
推荐指数
1
解决办法
1913
查看次数

java中方程的不同可能解的数量

我需要找到具有多个变量的等式的总可能不同解的数量.

例如:

1x + 2y + 8z = 13
Run Code Online (Sandbox Code Playgroud)

x,y和z值的不同组合总数是多少?我想不出一个算法来解决这个问题.我不需要打印答案,只需要不同组合的总数.系数和变量总是正数,也是最终数.

java algorithm math performance

-3
推荐指数
1
解决办法
85
查看次数