для моего приложения для Android, я работаю над базовым файловым менеджером, используя ExpandableListView
. Я настраиваю MultiChoiceModeListener
. Он работает нормально, за исключением следующего: когда я запускаю режим с несколькими выборами, скажем, через детей 2 группы 4 (считая от 0), а затем я хочу свернуть эту группу 4, режим с несколькими выборами уничтожается (вызывается onDestroyActionMode
). Странно то, что (как указано здесь ) этот метод onItemCheckedStateChanged
в режиме многократного выбора вызывается только тогда, когда я нажимаю на группу 4, а также ожидаемая позиция группы, на которую нажимают, не 4, а 5.
Так что я ищу ответ или подсказку, как взломать это разрушение многошумного режима против моей воли. Заранее большое спасибо.
Я добавляю фрагмент своего кода с многоэкстремальной реализацией, который в значительной степени генерируется при создании MultiChoiceModeListener
:
CustomListAdapter filesAdapter = new CustomListAdapter(getApplicationContext(), groups, children);
ExpandableListView lv = findViewById(R.id.expList);
lv.setChoiceMode(ExpandableListView.CHOICE_MODE_MULTIPLE_MODAL);
lv.setMultiChoiceModeListener(new ExpandableListView.MultiChoiceModeListener() {
@Override
public void onItemCheckedStateChanged(android.view.ActionMode mode, int position, long id, boolean checked) {
return;
}
@Override
public boolean onCreateActionMode(android.view.ActionMode mode, Menu menu) {
mode.getMenuInflater().inflate(R.menu.multiselect_context_menu, menu);
isActionModeOn = true;
actionMode = mode;
return true;
}
@Override
public boolean onPrepareActionMode(android.view.ActionMode mode, Menu menu) {
return false;
}
@Override
public boolean onActionItemClicked(android.view.ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.delete_id:
// some stuff
break;
case R.id.export_id:
// some stuff
break;
case R.id.share_id:
// some stuff
break;
case R.id.map_id:
// some stuff
break;
default:
break;
}
return true;
}
@Override
public void onDestroyActionMode(android.view.ActionMode mode) {
// some stuff
}
});