Android 如何从其他项目更新recyclerview项目中的数据?
我的Android 如何从其他项目更新recyclerview项目中的数据?,android,android-recyclerview,radio-button,Android,Android Recyclerview,Radio Button,我的RecyclerView有问题,我的RecyclerView有一个单选按钮,每行项目中几乎没有其他视图 我想要的是,当用户选中一个单选按钮时,我想取消选中其他单选按钮(如果之前选中了任何内容)。因为它是一个Recyclerview我不能使用radiogroup 在adapteronBindViewHolder中,我为每个单选按钮编写此侦听器 holder.radioButton.setOnClickListener(new View.OnClickListener() {
RecyclerView
有问题,我的RecyclerView
有一个单选按钮
,每行项目中几乎没有其他视图
我想要的是,当用户选中一个单选按钮时,我想取消选中其他单选按钮(如果之前选中了任何内容)。因为它是一个Recyclerview
我不能使用radiogroup
在adapteronBindViewHolder
中,我为每个单选按钮编写此侦听器
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特定项目中的视图属性?尝试以下操作:
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();
}
});
试试这个:
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();
}
});
您需要在适配器中全局引用selectedItem,然后在用户选中新单选按钮时更新所有项目
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private int selectedItemPosition = -1;
}
您需要在适配器中全局引用selectedItem,然后在用户选中新单选按钮时更新所有项目
public class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
private int selectedItemPosition = -1;
}
看到这个了吗?@Sanjay Majoka哦,是的,这是我想要的,我试过了,效果很好,非常感谢你的帮助:)看到这个了?@Sanjay Majoka哦,是的,这是我想要的,我试过了,效果很好,非常感谢你的帮助:)我在@Sanjay Majoka给我的链接中找到了我的请求,但谢谢你这是另一个很好的答案,它对mei有效在@Sanjay Majoka给我的链接中找到我的请求,但谢谢你这是另一个很好的答案,它对我有效greate,它很好,但是当我更新所有项目并且recyclerview有大量数据时,会有几秒钟的延迟?recyclerview不会一次更新列表中的所有项目。顾名思义,Recyclerview不会渲染甚至绘制列表中的项目,它只会重用视图。当每个项目出现在显示屏上时,它们都会得到更新。所以不必担心滞后。啊,我明白了,谢谢你的解释,让事情变得清晰OK greate,它工作得很好,但是当我更新所有项目,并且recyclerview有大量数据时,会有几秒钟的滞后?recyclerview不会一次更新列表中的所有项目。顾名思义,Recyclerview不会渲染甚至绘制列表中的项目,它只会重用视图。当每个项目出现在显示屏上时,它们都会得到更新。所以不必担心滞后。啊,我明白了,谢谢你的解释和澄清