У меня есть Recyclerview, который содержит несколько флажков. эти флажки получены от API (флажки текст и идентификатор). Я хочу получить список идентификаторов отмеченных флажков для отправки на сервер. Одно из моих решений:
- создать модель данных (Info_Checkbox), содержащую метод get и set
Я БЫ.
- создать ArrayList.
- установить идентификатор флажка в этот список массивов и использовать этот массив для
отправить параметры на сервер.
Но мой код неверен! Когда я установил несколько флажков, список массивов сохранил идентификатор последних флажков. Можете ли вы сказать другое решение или исправить эту ошибку?
Context context;
public ArrayList<Info_Filter> items = new ArrayList<>();
public SparseBooleanArray array = new SparseBooleanArray();
public ArrayList<Info_Checkbox> checkboxes = new ArrayList<>();
private Info_Checkbox info_checkbox = new Info_Checkbox();
public AdapterRecyFilterGroup(Context context, ArrayList<Info_Filter> 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();
}
});
}
}