Как сделать список со множественным выбором в android?

Пользователь

от kyleigh_runte , в категории: Другие , год назад

Как сделать список со множественным выбором в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от caterina , год назад

@kyleigh_runte 

В Android для создания списка с множественным выбором можно использовать класс ListView в сочетании с адаптером, который позволяет работать с данными списка. Существует несколько способов реализации списка с множественным выбором, включая использование CheckedTextView в качестве элементов списка или использование классов ArrayAdapter или CursorAdapter с поддержкой множественного выбора.


Пример использования класса ArrayAdapter с множественным выбором:

  1. Создайте XML-макет для отображения элемента списка. Например, list_item.xml:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal">

    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="16sp"
        android:paddingLeft="8dp" />

</LinearLayout>


  1. В активности или фрагменте создайте список и адаптер:
1
2
3
4
ListView listView = findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, R.layout.list_item, R.id.textView, items);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);


  1. Обработайте событие выбора элементов списка:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        SparseBooleanArray checkedItems = listView.getCheckedItemPositions();
        for (int i = 0; i < checkedItems.size(); i++) {
            int index = checkedItems.keyAt(i);
            boolean isChecked = checkedItems.valueAt(i);
            if (isChecked) {
                // Элемент выбран
                String selectedItem = (String) listView.getItemAtPosition(index);
                // Действия с выбранным элементом
            } else {
                // Элемент снят с выбора
            }
        }
    }
});


  1. Дополнительно можно добавить кнопку для обработки выбранных элементов:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SparseBooleanArray checkedItems = listView.getCheckedItemPositions();
        for (int i = 0; i < checkedItems.size(); i++) {
            int index = checkedItems.keyAt(i);
            boolean isChecked = checkedItems.valueAt(i);
            if (isChecked) {
                // Элемент выбран
                String selectedItem = (String) listView.getItemAtPosition(index);
                // Действия с выбранным элементом
            }
        }
    }
});


Обратите внимание, что в данном примере items - это список строк, которые будут отображаться в списке. Вы также можете использовать другие типы данных и настраивать адаптер под свои требования.

Пользователь

от magdalen_kub , 7 месяцев назад

@kyleigh_runte 

Вот пример кода, который демонстрирует создание списка с множественным выбором в Android:

  1. Создайте макет для элемента списка (list_item_multiple_choice.xml):
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceListItem"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
    android:textColor="@android:color/black"/>


  1. В вашей активности или фрагменте создайте список и адаптер:
1
2
3
4
ListView listView = findViewById(R.id.listView);
ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_multiple_choice, items);
listView.setAdapter(adapter);
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);


  1. Обработайте событие выбора элементов списка:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        SparseBooleanArray checkedItemPositions = listView.getCheckedItemPositions();
        for (int i = 0; i < checkedItemPositions.size(); i++) {
            int key = checkedItemPositions.keyAt(i);
            boolean checked = checkedItemPositions.get(key);
            if (checked) {
                // Элемент выбран
                String selectedItem = (String) listView.getItemAtPosition(key);
                // Действия с выбранным элементом
            } else {
                // Элемент снят с выбора
            }
        }
    }
});


  1. Добавьте кнопку для обработки выбранных элементов:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SparseBooleanArray checkedItemPositions = listView.getCheckedItemPositions();
        for (int i = 0; i < checkedItemPositions.size(); i++) {
            int key = checkedItemPositions.keyAt(i);
            boolean checked = checkedItemPositions.get(key);
            if (checked) {
                // Элемент выбран
                String selectedItem = (String) listView.getItemAtPosition(key);
                // Действия с выбранным элементом
            }
        }
    }
});


Этот код позволит вам создать список с множественным выбором в Android и обработать выбранные элементы. Вам также может понадобиться настройка разметки и другие дополнительные действия в зависимости от конкретных требований вашего приложения.