@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 - это список строк, которые будут отображаться в списке. Вы также можете использовать другие типы данных и настраивать адаптер под свои требования.
@kyleigh_runte
Вот пример кода, который демонстрирует создание списка с множественным выбором в Android:
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 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 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 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 и обработать выбранные элементы. Вам также может понадобиться настройка разметки и другие дополнительные действия в зависимости от конкретных требований вашего приложения.