ListView.CHOICE_MODE_MULTIPLE_MODALでsetChoiceModeが実装されているアプリケーションでlistviewを使用しています。リストビューを長押しすると、項目を選択できますが、その後に画面の向きが変更されると、アクションバーが邪魔になります。ListView-setChoiceModeで方向が異なる場合CHOICE_MODE_MULTIPLE_MODAL
私のコードはportrait mode & landscape modeでこの
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
adapter = new ItemListAdapter();
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL);
listView.setMultiChoiceModeListener(new AbsListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(ActionMode actionMode, int position, long l, boolean b) {
final int checkedItemCount = listView.getCheckedItemCount();
actionMode.setTitle(checkedItemCount + " Selected");
/*get the selected items*/
}
@Override
public boolean onCreateActionMode(ActionMode actionMode, Menu menu) {
actionMode.getMenuInflater().inflate(R.menu.menu_listview_delete, menu);
return true;
}
@Override
public boolean onPrepareActionMode(ActionMode actionMode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(final ActionMode actionMode, MenuItem menuItem) {
switch (menuItem.getItemId()){
case R.id.delete_item:
/*delete selected items*/
return true;
default:
return false;
}
}
@Override
public void onDestroyActionMode(ActionMode actionMode) {
adapter.removeSelection();
}
});
}
画像のように見えるバックボタンが押された場合は、それぞれの選択した項目を削除しようとすると、deleted.then得ることはありませんとき、それは(0 &として選択した項目を示してい私のアプリケーションアクティビティで実装されているランドスケープモードで)、アクションバーの色は白に変わります。 |画面サイズconfigChanges = "オリエンテーション:
一つの解決策は、マニフェスト
アンドロイドに下記の使用している
(ランドスケープモードでは、他の方法の選択項目にしようと肖像画で同じを削除するには、回転させたときに同じことが起こります) "
これを使用すると、方向変更時にアクティビティが再作成されません。ポートレートとランドスケープのレイアウトが異なるため、方向変更時にアクティビティレクリエーションが必要です。
オリエンテーションが変更されたためにアクティビティが再作成されるため、のsetMultiChoiceModeListenerが毎回呼び出されるという問題があります。
誰かが問題に取り組むことができますか?ありがとう!
は、私はこの前にも試みたが、問題は、カウント値が復元されますが、選択されていますアイテムは削除されません。他の提案はありますか? – Black
誰かが助けることができますか? – Black
アイテムを削除するコードはどこにありますか? – InziKhan