如何从另一个项目更新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?