У меня есть список, заполненный данными из курсора с использованием 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) во фрагменте диалога, который содержит другие элементы управления. Я также попытался расширить другие адаптеры, включая адаптер массива и макеты элементов клиента, но это снова не позволило мне выбрать несколько элементов.
Пожалуйста помоги!!