android studio截图获取id,android - 如何从android studio中的recyclerview获取已选中复选框的ID? - SO中文参考 - www.soinside.c...

这篇博客讨论了在Android应用中管理复选框选择ID的问题。作者遇到的挑战是在用户选择和取消选择复选框时,正确存储和更新选中的复选框ID。他们尝试使用ArrayList和SparseBooleanArray来跟踪状态,但遇到了只保存最后一个选中ID的问题。博客提到了可能的解决方案,如创建数据模型和使用ArrayList来存储ID,但这个实现存在错误。作者寻求帮助以解决这个问题。
摘要由CSDN通过智能技术生成

我有一些复选框的recyclearview。从API收到的复选框的文本和ID。我应该向API发送已选中复选框的ID。现在,我有两个问题:

如何检查复选框ID并存储在String值中?这个字符串必须在活动中使用。

当用户点击复选框并选中此复选框时,复选框的ID保存在字符串中。现在,用户后悔并取消选中复选框。在String中,复选框的id应该删除。

我的解决方案之一是:

创建包含方法get和set ID的数据模型(Info_Checkbox)。

创建ArrayList。

将选中的复选框ID设置为此数组列表,并使用此数组将params发送到服务器。

但我的代码不正确!当我检查了许多复选框时,数组列表保存最后一个复选框id。你能帮助我吗?

Context context;

public ArrayList items = new ArrayList<>();

public SparseBooleanArray array = new SparseBooleanArray();

public List orig;

public ArrayList checkboxes = new ArrayList<>();

private Info_Checkbox info_checkbox = new Info_Checkbox();

public AdapterRecyFilterGroup(Context context, ArrayList items) {

this.context = context;

this.items = items;

}

@NonNull

@Override

public SetViewHolderFilter onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

View view = LayoutInflater.from(viewGroup.getContext())

.inflate(R.layout.sample_filter_grouping, viewGroup, false);

return new SetViewHolderFilter(view);

}

@Override

public void onBindViewHolder(@NonNull SetViewHolderFilter setViewHolderFilter, int i) {

setViewHolderFilter.checkBox.setText(items.get(i).getName());

if (array.get(i)) {

setViewHolderFilter.checkBox.setChecked(true);

} else {

setViewHolderFilter.checkBox.setChecked(false);

}

}

@Override

public int getItemCount() {

return items == null ? 0 : items.size();

}

public class SetViewHolderFilter extends RecyclerView.ViewHolder {

CheckBox checkBox;

public SetViewHolderFilter(@NonNull final View itemView) {

super(itemView);

checkBox = itemView.findViewById(R.id.cb_filter);

checkBox.setOnClickListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

if (array.get(getAdapterPosition())) { //!checked

array.put(getAdapterPosition(), false);

info_checkbox.setId(items.get(getAdapterPosition()).getId());

checkboxes.remove(info_checkbox);

} else { //checked

array.put(getAdapterPosition(), true);

info_checkbox.setId(items.get(getAdapterPosition()).getId());

checkboxes.add(info_checkbox);

}

notifyDataSetChanged();

}

});

}

}

在活动中:

private String getCheckboxes(ArrayList checkboxes) {

String category = "";

for (int i = 0; i < checkboxes.size(); i++) {

category = checkboxes.get(i).getId() + "," + category;

}

Log.i("asfaf", category);

checkboxes.clear();

return category;

}

如果已选中复选框的ID为{7,5},则此方法返回{5,5}。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值