Как выбрать несколько элементов в ListView в Android.
Выбор нескольких элементов в ListView
Ответ 1
На самом деле вы можете;) Это просто вопрос пользователя, не так ли?
Попробуйте это, (1) для набора списка
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemsCanFocus(false);
(2) определить элемент списка как
<CheckedTextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="?android:attr/listPreferredItemHeight"
android:textAppearance="?android:attr/textAppearanceLarge"
android:gravity="center_vertical"
android:paddingLeft="6dip"
android:paddingRight="6dip"
android:checkMark="?android:attr/listChoiceIndicatorMultiple"
android:background="@drawable/txt_view_bg" />
Это то же самое, что и android.R.layout.simple_list_item_multiple_choice
кроме
android:background="@drawable/txt_view_bg
(3) И определите drawable txt_view_bg.xml как
<item android:drawable="@drawable/selected"
android:state_checked="true" />
<item android:drawable="@drawable/not_selected" />
Примечание. - Предпочтительный способ обработки множественного выбора - отслеживать выбор самостоятельно с помощью щелчка мышью, а не в зависимости от его состояния в списке.
Ответ 2
Вы не можете "выбрать" несколько элементов в ListView
. Вы можете использовать CHOICE_MODE_MULTIPLE
и проверить несколько элементов в ListView
.
Ответ 3
Шаг 1: setAdapter для вашего списка.
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, GENRES));
Шаг 2: установите режим выбора для списка. Вторая строка ниже кода показывает, какой флажок должен быть проверен.
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemChecked(2, true);
listView.setOnItemClickListener(this);
private static String[] GENRES = new String[] {
"Action", "Adventure", "Animation", "Children", "Comedy", "Documentary", "Drama",
"Foreign", "History", "Independent", "Romance", "Sci-Fi", "Television", "Thriller"
};
Шаг 3: Проверенные виды возвращаются в SparseBooleanArray, поэтому вы можете использовать приведенный ниже код для получения ключа или значений. Нижеприведенный пример просто отображает выбранные имена в одной строке.
@Override
public void onItemClick(AdapterView<?> adapter, View arg1, int arg2, long arg3)
{
SparseBooleanArray sp=getListView().getCheckedItemPositions();
String str="";
for(int i=0;i<sp.size();i++)
{
str+=GENRES[sp.keyAt(i)]+",";
}
Toast.makeText(this, ""+str, Toast.LENGTH_SHORT).show();
}
Ответ 4
В этом примере хранятся отмеченные вами значения и отображаются в тосте. И он обновляется, когда вы снимаете флажки http://android-coding.blogspot.ro/2011/09/listview-with-multiple-choice.html
Ответ 5
Чтобы "обновить" сообщение Toast после снятия некоторых элементов, просто поместите эту строку в цикл for:
if (sp.valueAt(i))
чтобы результат:
for(int i=0;i<sp.size();i++)
{
if (sp.valueAt(i))
str+=names[sp.keyAt(i)]+",";
}
Ответ 6
и получить его:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d(getLocalClassName(), "onItemClick(" + view + ","
+ position + "," + id + ")");
}
});
Ответ 7
Вам нужно выбрать опцию в ArrayAdapter
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_single_choice, countries);
Ответ 8
Лучший способ состоит в том, чтобы контекстная панель действий со списком в multiselect, вы можете сделать listview как multiselect, используя следующий код
listview.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
И теперь установите прослушиватель многозадачности для Listview, вы можете увидеть полную реализацию многосетевого списка в Android multi select listview
Ответ 9
Это очень просто,
listViewRequests.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
**AppCompatCheckedTextView checkBox = (AppCompatCheckedTextView) view;**
Log.i("CHECK",checkBox.isChecked()+""+checkBox.getText().toString());**
}
});