Cómo establecer ListView no se puede hacer clic
Tengo este ListView
que sólo necesita mostrar datos.
Así que no quiero hacerla clicable.
Primero he intentado cambiar el listview XML a:
<ListView android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:clickable="false" >
Pero no funcionó.
Así que para resolver mi problema que establezca a través del código:
- Android drawSelectorOnTop con GridView
- Los elementos ListView no se muestran como activados
- Android - Eliminar Spinner Dropdown Arrow
- XML selector de fondo no funciona en 2.3
- Botón - Cambiar el color de fondo al hacer clic
list.setSelector(android.R.color.transparent);
Pero no puedo creer que no hay mejor solución. ¿Alguna idea?
- Establecer el color específico de ColorStateList mediante programación
- ¿Cómo tener un selector de dibujos vectoriales?
- Color de fondo de elemento de lista seleccionado inesperadamente reutilizado después de desplazamiento de lista en tabletas
- Cambiar un icono en una entrada de Android ListView cuando se presiona
- ListView selector de filas en el API nivel 10?
- ¿Cualquier diferencia de comportamiento de estos estados ligeramente diferentes estirables?
- Android - State Selector Animaciones - Sólo animar de-prensa, NO presione
- Confusión con el selector de "anchura más pequeña 600 dp"
Aquí está, siguiendo el comentario:
Una forma de hacerlo es: ListView.setOnClickListener(null);
O
Puedes añadir android:focusable="false"
android:focusableInTouchMode="false"
O
Otra forma en el android:listSelector="@android:color/transparent"
diseño android:listSelector="@android:color/transparent"
Aclamaciones.
Simplemente anule isEnabled (posición) en su adaptador y devuelva false
@Override public boolean isEnabled(int position) { return false; }
Anule el siguiente método. Devuelve false para decir que todos los elementos no se pueden hacer clic.
@override public boolean areAllItemsEnabled() { return false; }
Y reemplaza por debajo del método para devolver qué elemento no se puede hacer clic
public boolean isEnabled(int position) { if(position == your_item_pos) { return false; } return true; }
android:listSelector="@android:color/transparent"
¡Cambia el color encendido al mismo que cuando no se hace clic! Así que aparece como si fuera texto llano … es un trabajo alrededor.
Simplemente copie este método en su clase de adaptador. Nada que hacer ………
@Override public boolean isEnabled(int position) { return false; }
Puede establecer cualquier condición para que algunos elementos seleccionados no puedan seleccionarse.
@Override public boolean isEnabled(int position) { //Y for non clickable item if(data_list.get(position).equalsIgnoreCase("Y")) { return false; } return true; }
android:focusable="true"
A cualquiera del elemento dentro de listview ahora listview no se puede hacer clic
Podrías usar
yourListView.setOnItemClickListener(null);
Camino fácil:
listView.setSelector(android.R.color.transparent);
Prueba este código
En Adapter.getView ()
i.setOnClickListener( null ); i.setLongClickable( false ); i.setClickable( false );
Sólo tienes que configurar android: enabled = "false" para el listview y que haría el truco .. por qué innecesario mantener métodos sobresalientes.
De hecho, @override isEnabled () y setOnClickListener (null) setClickable (false) setLongClickable (false) No funcionan para mí. Lo resuelvo mediante override performItemClick
@Override public boolean performItemClick(View view, int position, long id) { if(!clickAble){ return false; } return super.performItemClick(view,position,id); }
Tengo este ListView que sólo necesita mostrar datos. Así que no quiero hacerla clicable.
He hecho esto en uno de mis proyectos, y la muestra funciona bien.
Básicamente, sólo necesita:
- Un origen de datos (ArrayList, por ejemplo)
- Un widget ListView
- Un ArrayAdapter, con el fin de vincular el origen de datos con el ListView
MainActivity.java
package com.sample.listview; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.ArrayAdapter; import android.widget.ListView; public class SecondActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // data source String[] arrayData = {"Debian", "Ubuntu", "Kali", "Mint"}; // ListView Widget from a Layout ListView listView = (ListView) findViewById(R.id.mainListView); // an ArrayAdapter (using a layout as model for displaying the array items) ArrayAdapter aa = new ArrayAdapter<String>(this, R.layout.main_list_item_layout, arrayData); // binding the ArrayAdapter with the ListView Widget listView.setAdapter(aa); } }
Activity_main.xml
—> Asegúrese de que el Widget ListView esté usando wrap_content para layout_width y layout_height
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.sample.listview.MainActivity"> <ListView android:id="@+id/mainListView" android:layout_width="wrap_content" <---- HERE android:layout_height="wrap_content" <---- HERE /> </LinearLayout>
Main_list_item_layout.xml
<TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/mainListItem" android:layout_width="match_parent" android:layout_height="match_parent" android:textColor="#ff0000" android:textSize="20sp" > </TextView>
Eso es todo: un ListView no se puede hacer clic, solo presenta los datos en la pantalla.
- Manera más fácil de obtener Id de la vista (cadena) por su Id (int)
- Cómo acceder a las vistas de la actividad original desde el servicio de fondo generado