我在Listview
上使用setMultiChoiceModeListener
來調用操作模式以選擇要刪除的多個項目。在ListView
滾動我從服務器加載更多數據並通知適配器。在adapter
已收到通知後,操作模式(如果調用)被銷燬並重新創建,這會使標題和選定的數組列表爲空(您可以看到下圖)。列表視圖項目選擇仍然存在。我希望CAB像我們在Gmail應用程序中看到的那樣持久,在加載更多數據時不會破壞它。Android CAB在列表視圖後銷燬notifydatasetchanged
下面是操作模式
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) {
Item mItem = adapter.items.get(position);
if (mItem.isSection()) {
} else {
mode.setTitle(listView.getCheckedItemCount() + " Selected");
EntryItem mEntryItem = (EntryItem) mItem;
orderid = mEntryItem.orderId;
if (checked) {
selectedIdList.add(orderid);
} else {
selectedIdList.remove(orderid);
}
// Toggle the state of item after every click on it
adapter.toggleSelection(position);
}
}
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
if (item.getItemId() == R.id.delete){
if (selectedIdList.size() > 0) {
deleteItems(selectedIdList);
}
mode.finish();
return true;
}
return false;
}
@Override
public boolean onCreateActionMode(ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.menu_main, menu);
actionMode = mode;
return true;
}
@Override
public void onDestroyActionMode(ActionMode mode) {
actionMode = null;
if (selectedIdList.size() > 0) {
selectedIdList.clear();
adapter.mSelectedItemsIds.clear();
}
}
@Override
public boolean onPrepareActionMode(ActionMode mode, Menu menu) {
return false;
}
});
代碼任何幫助將不勝感激,謝謝提前。
嘗試從itemclick中移除可能阻止重新創建的mode.finish()。 –
請在這裏添加日誌,以便可以查看 –
@parikdhakan''onActionItemClicked'中的mode.finish()'在'actionbar'中的刪除圖標點擊被調用,否則它將不會在那裏調用。 –