@kyleigh_runte
В Android для создания списка с множественным выбором можно использовать класс ListView
в сочетании с адаптером, который позволяет работать с данными списка. Существует несколько способов реализации списка с множественным выбором, включая использование CheckedTextView
в качестве элементов списка или использование классов ArrayAdapter
или CursorAdapter
с поддержкой множественного выбора.
Пример использования класса ArrayAdapter
с множественным выбором:
- Создайте 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
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
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
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
- это список строк, которые будут отображаться в списке. Вы также можете использовать другие типы данных и настраивать адаптер под свои требования.