激活或取消激活recyclerview项目

时间:2017-11-26 04:31:02

标签: android android-recyclerview android-radiobutton

我有一个包含recyclerview和浮动操作按钮的片段。在recyclerview中,每行包含一个默认设置为禁用的单选按钮。我的要求是我需要在浮动操作按钮单击事件时在每一行中启用这些单选按钮。有没有解决方案?

提前致谢..

好的......我找到了一个解决方案。

这是我的代码。

fab.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    for (int i = 0; i <= adapter.getItemCount(); i++) {

                        View childVIew = recyclerView.getChildAt(i);

                        if (childVIew != null) {
                            RadioButton radioYes = childVIew.findViewById(R.id.radio_yes_my_health_info);
                            radioYes.setEnabled(true);

                            RadioButton radioNo = childVIew.findViewById(R.id.radio_no_my_health_info);
                            radioNo.setEnabled(true);
                        }
                    }

                    fab.setImageResource(R.drawable.ic_save_white_24dp);
                    recyclerView.getRecycledViewPool().setMaxRecycledViews(0, 0);
                }
            });

现在点击FAB按钮,我的recyclerview中的所有单选按钮都将被启用,我可以单击以更改每个单选按钮的状态。但在这里我遇到了一个问题。当我单击FAB按钮时,Recyclerview内的所有单选按钮都将被激活,但是当我滚动Recyclerview时,所有这些单选按钮将被禁用或再次停用。请给我一个解决方案。

1 个答案:

答案 0 :(得分:0)

您可以在适配器中添加标记,例如

boolean isActivated = false;

public void setActivated(boolean activated) {
    isActivated = activated;
}

在你的onBindViewHolder()方法中,你可以检查标志并相应地设置你的标志的状态。

在FAB的OnClickListener中,调用

adapter.setActivated(true);//true or false as per your requirement
adapter.notifyDataSetChanged();

这应该有用。