Tengo una vista de lista que se completa mediante registros de la base de datos. Ahora tengo que hacer algunos registros visibles pero no disponibles para la selección, ¿cómo puedo lograr eso?Cómo deshabilitar elementos en una Vista de lista?
aquí está mi código
public class SomeClass extends ListActivity {
private static List<String> products;
private DataHelper dh;
public void onCreate(Bundle savedInstanceState) {
dh = new DataHelper(this);
products = dh.GetMyProducts(); /* Returns a List<String>*/
super.onCreate(savedInstanceState);
setListAdapter(new ArrayAdapter<String>(this, R.layout.myproducts, products));
ListView lv = getListView();
lv.setTextFilterEnabled(true);
lv.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), ((TextView) arg1).getText(), Toast.LENGTH_SHORT).show();
}
});
}
}
El myproducts.xml archivo de distribución es la siguiente:
<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:textSize="16sp">
</TextView>
Tenga cuidado con esta solución. La documentación de BaseAdapter establece lo siguiente "Devuelve verdadero si el elemento en la posición especificada no es un separador". Eso significa que si devuelve falso, el artículo es un elemento separador. Algunos teléfonos no pueden dibujar el android: divisor entre un elemento normal y un elemento separador. – Janusz
Eso es definitivamente cierto y me he encontrado con ese problema antes; He incluido un divisor en el diseño de la fila y lo he mostrado/oculto en getView(), o dejé los elementos habilitados pero ignoré los clics en ellos y establecí un fondo que no tiene un estado presionado para que no se vean clicable. –
¡Excelente para colocar separadores de "Título", para tener secciones en su lista! – htafoya