Obtención de datos desde la vista de lista personalizada al hacer clic

Tengo un ListView personalizado con dos TextViews ambos que contienen valores diferentes. Lo que quiero ser capaz de hacerlo obtener el contenido de una de estas TextViews cuando se hace clic en un elemento.

Este es el código que tengo hasta ahora:

listView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String value; // value = (get value of TextView here) } }); 

Quiero ser capaz de asignar value al texto de uno de los TextView.

Aunque las sugerencias de @ Sam funcionarán bien en la mayoría de los escenarios, de hecho prefiero usar el AdapterView suministrado en onItemClick(...) para esto:

 public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Person person = (Person) parent.getItemAtPosition(position); // ... } 

Considero que esto es un enfoque un poco más AdapterView , ya que el AdapterView tendrá en cuenta cualquier vista de encabezado que potencialmente se puede agregar usando ListView.addHeaderView(...) .

Por ejemplo, si su ListView contiene un encabezado, tocando en el primer elemento proporcionado por el adaptador resultará en la variable de position que tiene un valor de 1 (en lugar de 0 , que es el caso predeterminado para ningún encabezado), ya que el encabezado ocupa la posición 0 . Por lo tanto, es muy fácil recuperar erróneamente los datos incorrectos para una posición e introducir una ArrayIndexOutOfBoundsException para el último elemento de la lista. Al recuperar el elemento del AdapterView , la posición se compensa automáticamente correctamente. Por supuesto, puede corregir manualmente también, pero ¿por qué no utilizar las herramientas proporcionadas? 🙂

Sólo FYI y FWIW.

Tienes pocas opciones. Hago referencia al código de su pregunta anterior .

  • Puede acceder a estos datos desde la view diseño de la fila:

     ViewHolder holder = (ViewHolder) view.getTag(); // Now use holder.name.getText().toString() and holder.description as you please 
  • Puede acceder al adaptador con la position :

     Person person = mAdapter.getItem(position); // Now use person.name and person.description as you please 

(Por cierto, en su clase Person, el name y la description son public por lo que no necesita los métodos get.)

Anule el siguiente método en adaterclass.

 public String[] getText() { return text; } 
  • Cambiar el color del texto de ListView simple Opción múltiple Android
  • Firebase para cargar más elementos en desplazamiento (Android)
  • ¿Por qué AdMob no devuelve
  • Agregar un elemento CheckBox a ListView impide que pueda recibir ItemClick
  • Android: ¿Cómo hacer que las filas de un ListView tengan alturas variables?
  • ¿Utilizar un ListView para crear una pantalla de configuración en Android?
  • ¿Cómo puedo hacer que mis filas listview tengan diferentes alturas
  • Posición de retención en ListView después de llamar a notifyDataSetChanged
  • Cómo añadir un botón debajo de un listview en android
  • Android setbackgrounddrawable listview
  • Android scroll mientras arrastra y suelta
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.