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