切换按钮在RecyclerView标头中不起作用

时间:2016-03-29 10:38:08

标签: android android-togglebutton

我的列表标题中有一个切换按钮(recyclerview)。但是当它被压迫时,它并没有改变状态。

这是onClick上的代码

if (btnFav.isChecked()) {
                    btnFav.setChecked(false);
                } else {
                    btnFav.setChecked(true);
                }

                Toast.makeText(itemView.getContext(), "check state is =" + btnFav.isChecked(), Toast.LENGTH_LONG).show();

这是xml中的切换按钮

<ToggleButton
        android:id="@+id/btn_fav"
        android:layout_width="32dp"
        android:layout_height="32dp"
        android:background="@drawable/btn_fav_bg"
        android:clickable="true"
        android:padding="10dp"
        android:textOff=""
        android:textOn="" />

另外,我正在使用recycler viewholder绑定适配器中的标头视图。 当我点击切换按钮时,toast仅显示&#34; check state is = false&#34;

1 个答案:

答案 0 :(得分:1)

OnClickListener上设置的ToggleButton正在抵消按钮的固有行为。单击时ToggleButton将处理自己检查的状态。而不是OnClickListener,而是在其上设置OnCheckedChangeListener,并将Toast移到那里。

btnFav.setOnCheckedChangeListener(new OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton button, boolean isChecked) {
            Toast.makeText(itemView.getContext(), "check state is =" + isChecked,
                Toast.LENGTH_LONG).show();
        }
    }
);