У меня есть hashmap для сохранения значения элемента, выбранного в 2-мерном hashmap
private HashMap<Integer, Boolean> itemBoolean = new HashMap<>();
private HashMap<Integer, HashMap<Integer, Boolean>> collectionBoolean = new HashMap<Integer, HashMap<Integer, Boolean>>();
Это функция для инициализации значения hashmap
private void inisialisasiData(){
Log.d(TAG, "inisialisasiData: "+sizeBrand);
for (int i=0; i<sizeBrand; i++){
for (int j=0; j<produks.size(); j++){
itemBoolean.put(j,false);
collectionBoolean.put(i, itemBoolean);
}
}
}
Это функция для отображения данных в listview
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
View convertView = view;
ViewHolder viewHolder;
Produk current = (Produk) produksSelected.get(i);
if (convertView == null) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.listto_item, viewGroup, false);
viewHolder.cbProduk = convertView.findViewById(R.id.cb_produk);
convertView.setTag(viewHolder);
}
else{
viewHolder = (ViewHolder) convertView.getTag();
}
Boolean currentCheck = collectionSparseBoolean.get(idxSelectedBrand).get(i);
viewHolder.cbProduk.setChecked(currentCheck);
viewHolder.cbProduk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Boolean before = collectionBoolean.get(idxSelectedBrand).get(i);
if (before){
checkCheckBox2(i, false);
}else{
checkCheckBox2(i, true);
}
}
});
Эта функция для изменения значения флажка и сохранения значения в hashmap
private void checkCheckBox2(int position, boolean value) {
if (value) {
collectionSparseBoolean.get(idxSelectedBrand).put(position, true);
} else {
collectionSparseBoolean.get(idxSelectedBrand).put(position, false);
}
}
Когда я меняю счетчик, значение hashmap в текущем idxSelectedBrand совпадает с значение перед idxSelectedBrand. Значение должно быть false , потому что в начале инициализация false . до замены счетчика
после замены счетчика