setOnItemClickListener en ListView personalizado

Tengo un ListView personalizado. Este ListView contiene 1 imagen y 6 TextView s. Para recuperar el valor, he creado un setOnItemClickListener(...) . Cada vez que hago clic en el ListView ¿cómo podría recuperar todos los datos de los 6 TextView s?

Código de muestra:

 ListView list = (ListView) findViewById(R.id.listview); list.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView< ?> parent, View view, int position, long id) { Object listItem = list.getItemAtPosition(position); } }); 

En el código de ejemplo anterior, listItem debe contener los datos seleccionados para textView .

Yo también tuve el mismo problema … Si pensamos lógicamente poco, podemos obtener la respuesta. Me funcionó muy bien. Espero que lo entiendas …

  1. listviewdemo.xml

      

  2. listviewcontent.xml : tenga en cuenta que TextViewandroid:id="@+id/txtLstItem"

            

  3. ListViewActivity.javaTenga en cuenta que view.findViewById(R.id.txtLstItem) – al establecer el valor en TextView por el método setText() obtenemos el texto de TextView por el objeto View devuelto por el método onItemClick . OnItemClick() devuelve la vista actual.

     TextView v=(TextView) view.findViewById(R.id.txtLstItem); Toast.makeText(getApplicationContext(), "selected Item Name is "+v.getText(), Toast.LENGTH_LONG).show();** 

    Usando esta lógica simple, podemos obtener otros valores como CheckBox , RadioButton , ImageView , etc.

     ListView List = (ListView) findViewById(R.id.listview); cursor = cr.query(CONTENT_URI,projection,null,null,null); adapter = new ListViewCursorAdapter(ListViewActivity.this, R.layout.listviewcontent, cursor, from, to); cursor.moveToFirst(); // Let activity manage the cursor startManagingCursor(cursor); List.setAdapter(adapter); List.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick (AdapterView < ? > adapter, View view,int position, long arg){ // TODO Auto-generated method stub TextView v = (TextView) view.findViewById(R.id.txtLstItem); Toast.makeText(getApplicationContext(), "selected Item Name is " + v.getText(), Toast.LENGTH_LONG).show(); } } ); 

Si en el oyente se obtiene el diseño de raíz del elemento (por ejemplo itemLayout ), y se le dieron algunos id a las textviews, se pueden obtener con algo como itemLayout.findViewById(R.id.textView1) .

Si ayuda a alguien, descubrí que el problema era que ya tenía un evento android: onClick en mi archivo de diseño (que inflé para las filas de ListView). Esto estaba reemplazando al evento onItemClick.

Si las respuestas anteriores no funcionan, tal vez no haya agregado el valor de retorno en el método getItem en el adaptador personalizado, vea esta pregunta y revise la primera respuesta.