Android Listview – не может выбирать несколько элементов при использовании курсора

У меня есть список, заполненный данными из курсора с помощью SimpleCursorAdapter. Я хочу сделать так, чтобы я мог выбирать несколько элементов с помощью флажка напротив каждого элемента, но я могу получить его только для проверки одного элемента за раз, т.е. каждый раз, когда я выбираю элемент, он очищает выбранный элемент.

Он отлично работает, если я заполняю список, используя ArrayAdapter. Я могу выбрать несколько элементов. Поэтому я не знаю, почему это не работает с SimpleCursorAdapter.

Это создается в диалоговом окне диалога, если это имеет значение.

На самом деле потянув мои волосы, помогите!

Вот код:

Cursor attributesCursor = mDBHelper.getItemAttributesbyType(menuID, itemID, "M"); getActivity().startManagingCursor(attributesCursor); ListView lv = new ListView(this.getActivity()); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); lv.setLayoutParams(params); SimpleCursorAdapter adapter = new SimpleCursorAdapter( getActivity(), android.R.layout.simple_list_item_multiple_choice, attributesCursor, new String[] { "AttributeDescription" }, new int[] { android.R.id.text1 },0); attributesLinearLayout.addView(lv); lv.setAdapter(adapter); lv.setItemsCanFocus(false); lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 

Редактирование: просто чтобы добавить дополнительную информацию, многостраничный список просмотров работает, если я использую этот код, где «items» – это простой массив String:

 lv.setAdapter(new ArrayAdapter(this.getActivity(), android.R.layout.simple_list_item_multiple_choice, items)); 

Кроме того, этот список динамически добавляется к существующему Linringayout (attributesLinearLayout) в диалоговом фрагменте, который содержит другие элементы управления. Я также попытался расширить другие адаптеры, включая адаптеры массива и макеты элементов клиента, но это еще раз не позволило мне выбрать несколько элементов.

Пожалуйста помоги!!

Я бы использовал режим Contextual Action в этом проекте, если вы хотите выбрать несколько элементов в списке. Вот как это делается.

Прежде всего, код должен расширять ListActivity и реализовывать ActionMode.Callback

В onCreate medthod вам нужно закодировать следующее:

 @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); String[] values = new String[] { "data list goes here" }; MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, values); setListAdapter(adapter); getListView().setOnItemLongClickListener(new OnItemLongClickListener() { @Override public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { if (mActionMode != null) { return false; } selectedItem = position; // Start the CAB using the ActionMode.Callback defined above mActionMode = MyListActivityActionbar.this.startActionMode(MyListActivityActionbar.this); view.setSelected(true); return true; } }); } 

Вам нужно вызвать метод show:

 private void show() { Toast.makeText(MyListActivityActionbar.this, String.valueOf(selectedItem), Toast.LENGTH_LONG).show(); } 

При каждом показе режима действия необходимо вызывать следующее. Он всегда onCreateActionMode после onCreateActionMode , но может быть вызван несколько раз, если режим недействителен:

  @Override public boolean onPrepareActionMode(ActionMode mode, Menu menu) { return false; // Return false if nothing is done } 

Затем, когда пользователь выбирает элемент списка, необходимо вызвать следующий метод:

  @Override public boolean onActionItemClicked(ActionMode mode, MenuItem item) { switch (item.getItemId()) { case R.id.menuitem1_show: show(); // Action picked, so close the CAB mode.finish(); return true; default: return false; } } 

Наконец, когда пользователь выходит из выбора:

  @Override public void onDestroyActionMode(ActionMode mode) { mActionMode = null; selectedItem = -1; } 
Intereting Posts
Как подсчитать количество файлов в папке во внешнем хранилище? Убедитесь, что метод вызывается в onNext из RxJava Subscriber Ошибка плагина после обновления Android Studio 2.1 Как использовать библиотеку openSSL в приложении ANDROID Не удалось разрешить: com.github.PhilJay: MPAndroidChart: v2.1.4 Кнопка не доступна для просмотра в расширенном ListView Кордова build: Пожалуйста, установите цель Android: «android-22». Я не хочу андроида-22. Я хочу андроид-19 – что мне делать? LayoutTransition: Animate Просмотр рядом с расширяющимся представлением Я установил use-feature android: required = "false", но игра Google продолжает настаивать на этих функциях Отправить уведомление автоматически из Firebase Запись на внутреннюю SD-карту на Android Admob не заполняет всю ширину Класс не найден Исключение при запуске демонстраций YouTube API для Android Lite / Pro версия vs In-app-billing upgrade option Как настроить proguard для ТОЛЬКО удаления вызовов регистрации в Android