Listview
にsetMultiChoiceModeListener
を使用して、複数のアイテムを選択して削除するアクションモードを起動しています。 ListView
スクロールで、サーバーからさらにデータをロードし、アダプターに通知します。 adapter
が通知された後、アクションモード(呼び出された場合)が破棄されて再作成され、タイトルと選択されたarraylistが空になります(下の図を参照)。リストビュー項目の選択はそのままです。もっと多くのデータを読み込んでも破壊されないGmailアプリケーションでは、CABを永続的にしたいと思っています。以下はリストビューの後でAndroid CABが破棄される
アクション・モード
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;
}
});
するためのコードですべてのヘルプは非常に、事前に感謝を理解されるであろう。あなたは/以下の例に示すように、アダプタの変更通知リフレッシュした後、選択した状態とショーを保持するために選択した項目IDを保存する必要が
itemclickからmode.finish()を削除しようとしましたが、これは再作成されない可能性があります。 –
ここにログを追加して見直すことができます –
@parikdhakan 'onActionItemClicked'の' mode.finish() 'は' actionbar'の削除アイコンのタップで呼び出されます。そうでなければ呼び出されません。 –