¿Es posible utilizar un OnItemClickListener en un ListView cuando el diseño Items tiene un widget seleccionable/editable (RadioButton, EditText o CheckBox)?ListView con widget seleccionable/editable
Respuesta
Es posible que desee echar un vistazo a this issue. Tener un elemento enfocable en una fila de ListView
provoca que NO se invoque el OnItemClickListener
. Sin embargo, eso no significa que no pueda tener elementos enfocables/clicables en una fila, hay algunas soluciones como this one.
Además, puede echar un vistazo a la pantalla Registros de llamadas. Tiene un ListView
con elemento seleccionable (el ícono de llamada a la derecha). See Source code here
Ayuda rápida: "Una forma fácil de solucionar este problema es llamar al " setDescendantFocusability (FOCUS_BLOCK_DESCENDANTS); " en las vistas de lista de lista a medida que se agregan. Podrá seleccionar filas, hacer clic en las filas y hacer clic en las casillas de verificación y botones secundarios. " - Esta es una cita del comentario # 27 en la página referida por dos de los enlaces en la respuesta anterior. ¡¡Muchas gracias!! –
El enlace a la solución 1 está roto. ¿Alguien puede editar esto? – Martze
solo el primer enlace está funcionando, los otros están rotos, arregle eso – BBdev
Citando el comentario # 31 en el enlace mencionado por Samuh (que resolvió el problema para mí):
De hecho, usted puede agregarlo a la XML diseño (si es inflado por uno): android: descenddantFocusability = "blocksDescendants".
Agregando aquí JIC esa página web está inactiva en el futuro.
Si cualquier elemento de la fila de la lista contiene una vista enfocable o clicable, OnItemClickListener
no funcionará.
elemento de la fila debe estar teniendo parámetro como android:descendantFocusability="blocksDescendants"
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:baselineAligned="false"
android:descendantFocusability="blocksDescendants"
android:gravity="center_vertical" >
// your other widgets here
</LinearLayout>
intentado muchas soluciones complejas, pero era la más simple que funcionó:
androide: enfocable = "false"
<CheckBox
android:id="@+id/fav_check_box"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false" />
Dos mejor solución
- Añadir
android:descendantFocusability="beforeDescendants"
a Listview en XML O - conjunto dado dos atributos a
false
como
android:focusable="false"
android:focusableInTouchMode="false"
Luego se manejará el niño elemento de la fila Listview (Button, EditarTexto etc) eventos en lugar de listView.setOnItemClick.
me fijo mi problema diferente, en mi artículo que tener más de un LinearLayout por lo que si usted da a su identificación y linearayout setOnclickListener en clase adaptador que va a funcionar, sólo el efecto original de tocar desaparecerá. pero este enlace Making a LinearLayout act like an Button es ventajosa para hacer acto linearlaout como botón de clic
elemento
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="10dp">
<TextView
android:id="@+id/txt_item_followers_name"
android:layout_width="250dp"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:gravity="center|start"
android:paddingLeft="15dp"
android:text="Ali"
android:textAppearance="?android:attr/textAppearanceMedium" />
<ImageView
android:id="@+id/imageView"
android:layout_width="35dp"
android:layout_height="35dp"
android:layout_alignParentStart="true"
android:layout_below="@+id/txt_item_followers_name"
android:layout_marginLeft="10dp"
android:src="@drawable/puan_icon" />
<TextView
android:id="@+id/txt_item_followers_mark"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/imageView"
android:layout_toEndOf="@+id/imageView"
android:background="@color/red_400"
android:paddingLeft="10dp"
android:text="25.5"
android:textAppearance="?android:attr/textAppearanceSmall" />
<LinearLayout
android:id="@+id/linear_one"
android:layout_width="match_parent"
android:layout_height="60dp"
android:layout_alignParentTop="true"
android:layout_toEndOf="@+id/txt_item_followers_name"
android:background="@color/red_400"
android:orientation="vertical">
<ImageView
android:id="@+id/btn_item_followers_2b_follow"
android:layout_width="100dp"
android:layout_height="match_parent"
android:layout_alignParentEnd="true"
android:layout_marginLeft="10dp"
android:src="@drawable/follow_buton" />
</LinearLayout>
</RelativeLayout>
dentro método getView
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
View view = convertView;
if (convertView == null)
view = inflater.inflate(R.layout.deneme, null);
final Followers2 myObj = myList.get(position);
LinearLayout linear_one = (LinearLayout) view.findViewById(R.id.linear_one); // HERE WE DOMUNİCATE IT
linear_one.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(parentActivity, "One Two", Toast.LENGTH_SHORT).show();
}
});
TextView name = (TextView) view.findViewById(R.id.txt_item_followers_name);
TextView mark = (TextView) view.findViewById(R.id.txt_item_followers_mark);
final ImageView btn_follow = (ImageView) view.findViewById(R.id.btn_item_followers_2b_follow);
name.setText(myObj.getName());
mark.setText(myObj.getScore());
/* if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
btn_follow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Followers2 myObj = myList.get(position);
if (myObj.isFollow() == true) {
btn_follow.setImageResource(R.drawable.following_buton);
} else {
btn_follow.setImageResource(R.drawable.follow_buton);
}
}
});*/
return view;
}
- 1. Android - Widget con Scroll Listview Manual Refresh
- 2. Filter ListView con arrayadapter
- 3. Problemas con widget Android-pulltorefresh
- 4. Dos botones con PendingIntents - Widget
- 5. Implementación de ListView en el widget de la pantalla de inicio
- 6. ListView con DataPager no funciona
- 7. ListView con Alphabet en Android
- 8. ListView con imágenes y texto
- 9. Buscar en ListView con EditText
- 10. Android ListView update con SimpleCursorAdapter
- 11. Android ListView con encabezado complejo
- 12. Filtrado ListView con adaptador personalizado (objeto)
- 13. Implementar ListView en Android Widgets
- 14. ListView con CHOICE_MODE_MULTIPLE utilizando CheckedText en una vista personalizada
- 15. ListView dentro de otra ListView
- 16. widget de Android con múltiples botones
- 17. Usando el widget NumberPicker con cadenas
- 18. Un widget qt con fondo totalmente transparente
- 19. smoothScrollToPositionFromTop para Froyo ListView?
- 20. Android looping infinito ListView?
- 21. Widget Security
- 22. ListView vs LinearLayout
- 23. ListView Android con OnItemClickListener Y GestureDetector
- 24. Android: wrap_content no funciona con ListView
- 25. Android: Vertical ListView con hileras superpuestas
- 26. ListView con horizontalScrollView OnItemClick no funciona
- 27. ListView con diseño de filas personalizado - Android
- 28. EditText en ListView con windowSoftInputMode adjustPan
- 29. Prellenar ListView en una aplicación con FXML
- 30. ListView no se actualizó correctamente con ObservableCollection
Extiende ListActivity en lugar de la actividad. consulte http://www.softwarepassion.com/android-series-custom-listview-items-and-adapters/ –