У меня есть список, заполненный данными из курсора с помощью SimpleCursorAdapter. Я хочу сделать так, чтобы я мог выбирать несколько элементов с флажком напротив каждого элемента, но я могу заставить его проверять только один элемент за раз, т.е. каждый раз, когда я выбираю элемент, он очищает текущий выбранный элемент.
Все работает нормально, если я заполняю список с помощью ArrayAdapter. Я могу выбрать несколько элементов. Поэтому я не знаю, почему это не работает с SimpleCursorAdapter.
Это создается в DialogFragment, если это имеет значение.
Я рву на себе волосы, пожалуйста, помогите!!
Вот код:
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);
Редактировать: Просто чтобы добавить дополнительную информацию, список с несколькими вариантами выбора работает, если я использую этот код, где «элементы» — это простой массив строк:
lv.setAdapter(new ArrayAdapter(this.getActivity(),
android.R.layout.simple_list_item_multiple_choice, items));
Кроме того, этот список динамически добавляется к существующему Linearlayout (attributesLinearLayout) в диалоговом фрагменте, который содержит другие элементы управления. Я также попытался расширить другие адаптеры, включая адаптер массива и макеты элементов клиента, но это снова не позволило мне выбрать несколько элементов.
Пожалуйста, помогите!!