Из этого утверждения в вашем адаптере:
holder.check.setChecked(data.get(position).isSelected())
похоже, что ImageItem
уже поддерживает состояние флажка в selected
поле участника. Если это так, то вместо перебора фактических представлений в списке и переключения видимости флажков для каждого из них вы можете перебрать список ImageData
и позже уведомить адаптер об изменении данных.
Примерно так:
List<ImageItem> list = // ...
// Mark everything as selected
for(ImageItem item : list){
item.setSelected(true);
}
// Refresh the list
gridAdapter.notifyDataSetChanged();
Идея состоит в том, чтобы обновить саму модель, а затем вызвать обновление списка.
Обновлено
Хорошо, основываясь на ваших комментариях, позвольте мне попытаться объяснить еще раз:
Так что в настоящее время у вас есть этот кусок кода, чтобы включить все флажки:
GridAdapter = new GridViewAdapter(this, R.layout.grid_item_layout, getData());
gridView.setAdapter(gridAdapter);
// gridView.OnLongclick....
for(int index=0;index< adapterView.getChildCount();index++) {
// ....
}
Я предлагаю следующее:
// Get the data and store it in a local copy
List<ImageItem> items = getData();
// Mark each item in the list as selected
for(ItemItem item : items){
item.setSelected(true);
}
// Pass the updated list to the adapter
GridAdapter = new GridViewAdapter(this, R.layout.grid_item_layout, items);
gridView.setAdapter(gridAdapter);
// Assuming that your adapter is properly implemented,
// all checkboxes should be marked as selected now.