Выбор нескольких элементов в ListView - PullRequest
26 голосов
/ 01 сентября 2009

Как выбрать несколько элементов в ListView в Android.

Ответы [ 9 ]

43 голосов
/ 02 сентября 2009

На самом деле вы можете;) Это просто вопрос взаимодействия с пользователем, верно?

Попробуйте это, (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) И определить рисуемый txt_view_bg.xml как

<item android:drawable="@drawable/selected"
  android:state_checked="true" />  
<item android:drawable="@drawable/not_selected" />

Примечание. - Предпочтительный способ обработки множественного выбора заключается в том, чтобы отслеживать выбранные вами варианты одним щелчком мыши, а не в зависимости от его состояния в списке.

13 голосов
/ 01 ноября 2011

Шаг 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();

    }
5 голосов
/ 31 июля 2012

В этом примере хранятся значения, которые вы проверили, и они отображаются в виде тоста. И он обновляется, когда вы снимаете отметки с элементов http://android -coding.blogspot.ro / 2011/09 / listview-with-множественный выбор.html

2 голосов
/ 05 июня 2014

Чтобы «обновить» сообщение Toast после снятия отметки с некоторых элементов, просто поместите эту строку в цикл for:

if (sp.valueAt(i))

так что получается:

for(int i=0;i<sp.size();i++)
{
    if (sp.valueAt(i))
        str+=names[sp.keyAt(i)]+",";
}
1 голос
/ 28 августа 2017

Это очень просто,

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());**

               }
            });
0 голосов
/ 25 марта 2018

Я бы посоветовал проверить логику ListActivity в соответствии с тем, что необходимо, может быть лучшим способом не терять много времени

ссылка

developer.android

0 голосов
/ 10 марта 2017

Лучший способ - иметь контекстную панель действий с просмотром списка на множественном выборе. Вы можете сделать просмотр списка множественным выбором, используя следующий код

listview.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);

А теперь установите многоканальный прослушиватель для Listview. Вы можете увидеть полную реализацию множественного выбора просмотра списка на Android множественный выбор просмотра списка

0 голосов
/ 28 февраля 2013

Вы должны выбрать опцию в ArrayAdapter:

ArrayAdapter<String> adapter = new ArrayAdapter<String>
    (this, android.R.layout.simple_list_item_single_choice, countries);
0 голосов
/ 08 февраля 2011

и получить его:

public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {

                Log.d(getLocalClassName(), "onItemClick(" + view + ","
                        + position + "," + id + ")");
        }
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...