激活或取消激活 recyclerview 项目

Activate or de activate recyclerview items

我有一个片段,其中包含一个回收视图和一个浮动操作按钮。在 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 时,所有这些单选按钮将被禁用或再次停用。请给我一个解决方案。

您可以尝试在单击按钮时遍历每个视图,如下所示:

for (int i = 0; i < adapter.getItemCount(); i++) {
    View view = recycler.getLayoutManager().findViewByPosition(i);
    view.setSelected(true); //Select item
    notifyItemChanged(i); //Notify item changed
}

你可以在你的适配器中有一个标志,比如

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();

这应该有效。