【发布时间】:2019-01-21 05:01:37
【问题描述】:
嗨,我正在使用带有复选框的 recyclerview,现在我正在尝试的是用户检查的任何列表项,我想在我的数组列表中添加这些项目,现在它不起作用,它添加了所有列表项而不是添加选中的列表项.以下是我的适配器代码。谁能帮我解决这个问题?
public static class CustomAdapter extends RecyclerView.Adapter<CustomAdapter.MyViewHolder> {
private LayoutInflater inflater;
public static ArrayList<Model> imageModelArrayList;
private Context ctx;
public CustomAdapter(Context ctx, ArrayList<Model> imageModelArrayList) {
inflater = LayoutInflater.from(ctx);
this.imageModelArrayList = imageModelArrayList;
this.ctx = ctx;
}
@Override
public CustomAdapter.MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.rv_item, parent, false);
MyViewHolder holder = new MyViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(final CustomAdapter.MyViewHolder holder, int position) {
holder.checkBox.setText("Checkbox " + position);
holder.checkBox.setChecked(imageModelArrayList.get(position).getSelected());
holder.tvAnimal.setText(imageModelArrayList.get(position).getAnimal());
alertviewlist =new ArrayList<ArrayList<Model>>();
// holder.checkBox.setTag(R.integer.btnplusview, convertView);
holder.checkBox.setTag(position);
holder.checkBox.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Integer pos = (Integer) holder.checkBox.getTag();
Toast.makeText(ctx, imageModelArrayList.get(pos).getAnimal() + " clicked!", Toast.LENGTH_SHORT).show();
//alertviewlist.addAll(imageModelArrayList);
for (int i = 0; i < imageModelArrayList.size(); i++) {
alertviewlist.add(i, imageModelArrayList);
}
System.out.println(alertviewlist.size());
if (imageModelArrayList.get(pos).getSelected()) {
imageModelArrayList.get(pos).setSelected(false);
} else {
imageModelArrayList.get(pos).setSelected(true);
}
}
});
}
@Override
public int getItemCount() {
return imageModelArrayList.size();
}
class MyViewHolder extends RecyclerView.ViewHolder {
protected CheckBox checkBox;
private TextView tvAnimal;
public MyViewHolder(View itemView) {
super(itemView);
checkBox = (CheckBox) itemView.findViewById(R.id.cb);
tvAnimal = (TextView) itemView.findViewById(R.id.animal);
}
}
}
【问题讨论】:
-
在您的模型中,保留一个布尔变量以了解该项目是否被选中,并仅在选中时将其添加到您的数组列表中
-
@NileshRathod 我想在我的新数组列表中添加选定的名称,请仔细检查问题
-
@VivekMishra 看到吐司,一旦用户检查我得到动物名称,我想在我的 alertviewlist 中添加检查的名称
-
@khimji我已经仔细检查了这个问题,您需要仔细检查链接的答案,使用该答案您会得到提示,请与社区相处融洽没有人在这里为您编写代码我们都是在这里彼此
标签: android arraylist android-recyclerview android-checkbox