【发布时间】:2018-06-10 09:56:49
【问题描述】:
现在我正在使用带有 CheckBox 的 RecyclerView。我的目标是选中复选框列表。这里我的问题是,当我尝试选择任何一个复选框时,意味着它同时选择了两个复选框。例如,我选择了第 0 位复选框,但它自动选择了第 0 位和第 13 位复选框。
滚动时没有添加重复项,请理解清楚..
在这里我必须附加我的 RecyclerView 适配器类。请任何人帮助我..
提前致谢。
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private ArrayList<ModuleViewModel> items = new ArrayList<>();
private OnItemCheckListener onItemClick;
private Context mContext;
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(mContext).inflate(R.layout.item_modules_list, parent, false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) {
final ModuleViewModel currentItem = items.get(position);
holder.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
holder.checkbox.setChecked(
! holder.checkbox.isChecked());
if ( holder.checkbox.isChecked()) {
onItemClick.onItemChecked(currentItem);
} else {
onItemClick.onItemUnchecked(currentItem);
}
}
});
}
@Override
public int getItemCount() {
return items.size();
}
public interface OnItemCheckListener {
void onItemChecked(ModuleViewModel item);
void onItemUnchecked(ModuleViewModel item);
}
public MyAdapter (Context context,ArrayList<ModuleViewModel> items, @NonNull OnItemCheckListener onItemCheckListener) {
this.mContext = context;
this.items = items;
this.onItemClick = onItemCheckListener;
}
static class MyViewHolder extends RecyclerView.ViewHolder {
CheckBox checkbox;
View itemView;
public MyViewHolder(View itemView) {
super(itemView);
this.itemView = itemView;
checkbox = (CheckBox) itemView.findViewById(R.id.uiCkbModule);
checkbox.setClickable(false);
}
public void setOnClickListener(View.OnClickListener onClickListener) {
itemView.setOnClickListener(onClickListener);
}
}
}
这是我的适配器调用代码
mModuleListAdapter = new ModuleListAdapter(mContext, mModuleListModel, this);
mRvModuleView.setAdapter(mModuleListAdapter);
【问题讨论】:
-
在模型类中使用布尔字段并使用该字段进行选择。
-
@user8,你们明白还是不明白?...我在哪里说滚动时重复项目?那么你如何标记为重复?
-
我不知道你们投反对票的原因。任何人都可以说出原因。如果您知道解决方案,请给出解决方案。请...
标签: android checkbox android-recyclerview recyclerview-layout