studio setonitemclicklistener setonclicklistener getitematposition funciona android listview

setonitemclicklistener - setonclicklistener listview android studio



setOnItemClickListener en ListView personalizado (5)

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?


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 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 las respuestas anteriores no funcionan, tal vez no haya agregado el valor de retorno en el método getItem en el adaptador personalizado, vea this pregunta y revise la primera respuesta.


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

    <ListView android:id="@+id/listview" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="30dp" android:paddingLeft="10dp" android:paddingRight="10dp" />

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

    <LinearLayout android:id="@+id/listviewcontentlayout" android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="horizontal"> <ImageView android:id="@+id/img1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="6dp" /> <LinearLayout android:layout_width="0dp" android:layout_height="fill_parent" android:layout_weight="1" android:orientation="vertical"> <TextView android:id="@+id/txtLstItem" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="left" android:shadowColor="@android:color/black" android:shadowRadius="5" android:textColor="@android:color/white" /> </LinearLayout> <ImageView android:id="@+id/img2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginRight="6dp" /> </LinearLayout>

  3. ListViewActivity.java - Tenga 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(); } } );


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 .