Из этого утверждения в вашем адаптере:
ImageItem
похоже, что ImageItem
уже поддерживает состояние флажка в selected
поле участника. Если это так, то вместо того, чтобы повторять фактические представления в списке и переключать видимость флажка для каждого из них, вы можете перебирать список ImageData
и уведомлять позже адаптер, который данные изменили.
Что-то вроде этого:
List<ImageItem> list = // ...
// Mark everything as selected
for(ImageItem item : list){
item.setSelected(true);
}
// Refresh the list
gridAdapter.notifyDataSetChanged();
Идея состоит в том, чтобы обновить сама модель и затем запустить обновление списка.
Обновлено
OK, основываясь на ваших комментариях, позвольте мне попытаться объяснить еще раз:
Итак, теперь у вас есть этот кусок кода для переключения всех флажков:
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.