studio - seleccion multiple listview android
Seleccionar mĂșltiples elementos en ListView (10)
Cómo seleccionar múltiples elementos en ListView en Android.
Debes seleccionar la opción en ArrayAdapter
:
ArrayAdapter<String> adapter = new ArrayAdapter<String>
(this, android.R.layout.simple_list_item_single_choice, countries);
En realidad puedes;) Es solo una cuestión de experiencia del usuario, ¿verdad?
Pruebe esto, (1) para establecer el control de lista
listView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
listView.setItemsCanFocus(false);
(2) define el elemento de la lista como
<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" />
Esto es lo mismo que android.R.layout.simple_list_item_multiple_choice
excepto android:background="@drawable/txt_view_bg
(3) Y defina drawable txt_view_bg.xml como
<item android:drawable="@drawable/selected"
android:state_checked="true" />
<item android:drawable="@drawable/not_selected" />
Nota: - La forma preferida de manejar la opción múltiple es hacer un seguimiento de las elecciones usted mismo al hacer clic en el elemento, en lugar de depender de su estado en la lista.
Es muy sencillo,
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());**
}
});
Este ejemplo almacena los valores que ha marcado y los muestra en un brindis. Y se actualiza cuando desmarca elementos http://android-coding.blogspot.ro/2011/09/listview-with-multiple-choice.html
La mejor manera es tener una barra de acción contextual con listview en multiselect. Puede hacer que listview como multiselect use el siguiente código
listview.setChoiceMode(AbsListView.CHOICE_MODE_MULTIPLE_MODAL);
Y ahora configure el oyente multichoice para Listview. Puede ver la implementación completa de la lista de selección multiselect en la lista de selección múltiple de Android.
No puede "seleccionar" varios elementos en un ListView
. Puede usar CHOICE_MODE_MULTIPLE
y verificar varios elementos en un ListView
.
Para "actualizar" el mensaje de Toast después de desmarcar algunos elementos, simplemente ponga esta línea dentro del ciclo for:
if (sp.valueAt(i))
por lo que resulta:
for(int i=0;i<sp.size();i++)
{
if (sp.valueAt(i))
str+=names[sp.keyAt(i)]+",";
}
y para obtenerlo:
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
Log.d(getLocalClassName(), "onItemClick(" + view + ","
+ position + "," + id + ")");
}
});
ListActivity
verificar la lógica de ListActivity
acuerdo con lo que se necesita, podría ser la mejor manera de no perder demasiado tiempo
Paso 1: configura Adaptador a tu vista de lista.
listView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_multiple_choice, GENRES));
Paso 2: configure el modo de elección para la vista de lista. La segunda línea del código siguiente representa qué casilla de verificación debe marcarse.
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"
};
Paso 3: las vistas comprobadas se devuelven en SparseBooleanArray, por lo que puede usar el siguiente código para obtener la clave o los valores. La muestra siguiente simplemente muestra los nombres seleccionados en una sola Cadena.
@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();
}