如何从另一个项目更新recyclerview项目中的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从另一个项目更新recyclerview项目中的数据?相关的知识,希望对你有一定的参考价值。

我有RecyclerView的问题,我有RecyclerView,每个行项目都有radio button和其他几个视图,

我想要的是,当用户检查RadioButton时,我想取消选中其他RadioButton(如果之前检查过任何内容)。因为它是Recyclerview我不能使用radiogroup。

在适配器onBindViewHolder中,我为每个单选按钮编写了这个监听器

  holder.radioButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectedPosition = holder.getAdapterPosition();
            Toast.makeText(activity, "section: " + selectedPosition, Toast.LENGTH_SHORT).show();
        }
    });

如何选择先前的单选按钮取消选中? 换句话说,我如何从另一个项目视图监听器更新recyclerview的特定项目中的视图属性?

答案

您需要在适配器中全局引用selectedItem,然后在用户检查新的单选按钮时更新所有项。

public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
    private int selectedItemPosition = -1;
}

并在适配器的onBindViewHolder()方法中做一些事情,

@Override
public void onBindViewHolder(final Adapter.ViewHolder holder, int position) {
    holder.radioButton.setChecked(holder.getAdapterPosition()==selectedItemPosition);
    holder.radioButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            selectedItemPosition = holder.getAdapterPosition();
            notifyDataSetChanged();
        }
    });
}
另一答案

试试这个::

        if (position == selectedPosition) {
            holder.radioButton.setChecked(true);
            Toast.makeText(activity, "section: " + selectedPosition, Toast.LENGTH_SHORT).show();
        } else {
            holder.radioButton.setChecked(false);
        }

        holder.radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                selectedPosition = holder.getAdapterPosition();
                notifyDataSetChanged();
            }
        });

以上是关于如何从另一个项目更新recyclerview项目中的数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新 RecyclerView 中某个项目的特定 TextView?

如何更新/刷新 RecyclerView 中的特定项目

从另一个 Activity 刷新 Recyclerview

是否可以将项目拖到 RecyclerView 之外?

如何在列表顶部的 recyclerview 中显示新项目(更新或添加)

搜索过滤器后如何更新android RecyclerView项目?