回答
显示已经检查 -
你可以保持你的列表的大小的布尔数组。在绑定视图处理布尔(真/假)逻辑,如设置检查单选按钮的真/假。
处理新的点击 -
然后在单选按钮的onclick,每个数组元素的值设置为false,之后的当前阵列的位置设置为true。现在拨打notifyDatatSetChanged()
。
你可以使用这样的事情,它存储位置选择的项目,你可以添加更多的代码来存储项目本身,如果你的适配器进行重新排序本身
public class SingleChoiceAdapter extends RecyclerView.Adapter<SingleChoiceAdapter.ItemViewHolder> {
private static final int NO_POSITION = -1;
private static final String SELECTED_ITEM_POSITION = "SELECTED_ITEM_POSITION";
private final LayoutInflater inflater;
private final List<Item> items;
private int selectedItemPosition = NO_POSITION;
public SingleChoiceAdapter(Context context, Bundle savedInstanceState) {
inflater = LayoutInflater.from(context);
items = new ArrayList<>();
if (savedInstanceState != null) {
selectedItemPosition = savedInstanceState.getInt(SELECTED_ITEM_POSITION, NO_POSITION);
}
}
@Override
public ItemViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
final View view = inflater.inflate(R.layout.item, parent, false);
return new ItemViewHolder(view);
}
@Override
public void onBindViewHolder(final ItemViewHolder holder, int position) {
final Item item = items.get(position);
holder.textView.setText(item.name);
holder.textView.setBackgroundColor(position == selectedItemPosition
? Color.LTGRAY
: Color.TRANSPARENT);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateSelectedItem(holder.getAdapterPosition());
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public void setItems(List<Item> items) {
this.items.clear();
this.items.addAll(items);
notifyDataSetChanged();
}
public Item getSelectedItem() {
if (selectedItemPosition == NO_POSITION) {
return null;
}
return items.get(selectedItemPosition);
}
public void onSaveInstanceState(Bundle outState) {
outState.putInt(SELECTED_ITEM_POSITION, selectedItemPosition);
}
private void updateSelectedItem(int newSelectedItemPosition) {
if (selectedItemPosition != NO_POSITION) {
notifyItemChanged(selectedItemPosition);
}
selectedItemPosition = newSelectedItemPosition;
notifyItemChanged(newSelectedItemPosition);
}
public static class ItemViewHolder extends RecyclerView.ViewHolder {
public final TextView textView;
public ItemViewHolder(View itemView) {
super(itemView);
textView = (TextView) itemView.findViewById(R.id.text_view);
}
}
}
商店已选中的项目在states
一个SparseBooleanArray
与位置key.As更改button
的state
,更新其状态在booleanArray
并调用notifyItemChanged(position)
。而在BindviewHolder(ViewHolder viewholder,int position)
方法在this从booleanArray
像viewholder.radioButton.setChecked(boolean.get(position))
。看看加载状态基本思想
你甚至可以用一个单一的整数变量来完成它,而不是维护一个数组,这个数组在昂贵的空间是一个约束条件的设备中比如android。
所以,只保留一个整数变量,可以说int selectedPosition = -1最初。 在onBind检查是否位置==选定位置,如果为true检查按钮,否则取消选中。 每当用户检查/取消选中按钮,只需更新selectedPosition
这样的事情,
if(selectedPosition==position)
selectedPosition=-1
else{
selectedPosition=position
notifyItemChanged(selectedPosition);
}
notifyItemChanged(position);
请设置id为位置onBindViewHolder
,那么你可以处理这个方法也行动。更新数据集,并呼吁notifyDataSetChanged
这里是我的示例代码
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
ItemObject itemObject = mDataset.get(position);
((ViewHolder)holder).mTextView.setText(itemObject.getTitle());
Button mButton = ((ViewHolder) holder).mButton;
mButton.setSelected(itemObject.isSelected());
if(itemObject.isSelected()){
((ViewHolder)holder).mTextView.setText("OK");
}
mButton.setTag(position);
mButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
updateDatset((Integer) v.getTag());
}
});
}
在updateDataset方法,我更新此数据集的信息,并致电notifyDataSetChanged()
好运
- 1. 单选按钮中的单选按钮
- 2. 如何实现单选按钮行为?
- 3. Flash单选按钮:如何获取选定的单选按钮?
- 4. 单选按钮像单选按钮
- 5. 如何检查单选按钮上的单选按钮
- 6. WatiN:如何检查单选按钮组中的单选按钮
- 7. 如何选择按钮后的所有单选按钮android
- 8. 没有正确获取单选按钮中的单选按钮
- 9. Formtastic单选按钮没有每个单选按钮的标签
- 10. 单选按钮只呈现单选按钮而不是文本
- 11. 具有单选按钮的CSS星级
- 12. 单选按钮,并具有on Rails的
- 13. 单选按钮
- 14. [单选按钮]
- 15. 单选按钮上的单选按钮选择
- 16. 如何选择selenium webdriver中的单选按钮?动态选择单选按钮
- 17. Kentico单选按钮呈现
- 18. SSRS单选按钮呈现
- 19. 单选按钮上的单选按钮单击
- 20. 具有与单选按钮相同行为的HTML按钮组
- 21. 无法实现单选按钮在iPhone
- 22. 选中的单选按钮
- 23. 单选按钮如何?
- 24. 如何使iphone中的单选按钮和复选框按钮?
- 25. 如何启用/禁用选择单选按钮的按钮?
- 26. 如何syle django呈现单选按钮?
- 27. 如何使用具有单选按钮的CakePHP显示表单?
- 28. 带按钮的控制单选按钮
- 29. 带单选按钮功能的按钮
- 30. 如何让单选按钮选择另一个单选按钮的值
如果你没有发布邮政编码,我们如何帮助你? – Moudiz