Cómo expandir y contraer un elemento en listview

Soy bastante nuevo en Android. Quiero implementar una vista de lista. Contiene algunos elementos de la lista y cuando se hace clic en ellos, deben expandirse mostrando más información. Pero no pude encontrar una manera de hacer eso

Aquí está mi activity_main.xml

 <RelativeLayout 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" > <ListView android:id="@+id/listview1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:clickable="True" android:layout_alignParentTop="true" android:divider="#000" android:dividerHeight="0.5dp" android:padding="7dp" > </ListView> </RelativeLayout> 

listview.xml

 <?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" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_marginLeft="23dp" android:layout_marginTop="20dp" android:drawableLeft="@drawable/expand_icon" android:drawablePadding="10dp" android:textAppearance="?android:attr/textAppearanceLarge" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView1" android:layout_below="@+id/textView1" android:visibility="gone" /> </RelativeLayout> 

Quiero rellenar el textview2 para mostrar más información. A continuación se muestra mi main_activity.java

 public class MainActivity extends Activity { ListView list; String[] titles; String[] desc; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Resources res = getResources(); list = (ListView) findViewById(R.id.listview1); titles = res.getStringArray(R.array.text_info); desc = res.getStringArray(R.array.text_desc); ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.listview, R.id.textView1, titles); list.setAdapter(adapter); } 

Strings.xml

 <string name="app_name">ListView</string> <string name="hello_world">Hello world!</string> <string-array name="text_info"> <item>Tutorial 1</item> <item>Tutorial 2</item> <item>Tutorial 3</item> <item>Tutorial 4</item> <item>Tutorial 5</item> <item>Tutorial 6</item> <item>Tutorial 7</item> </string-array> <string-array name="text_desc"> <item>Tutorial 1</item> <item>Tutorial 2</item> <item>Tutorial 3</item> <item>Tutorial 4</item> <item>Tutorial 5</item> <item>Tutorial 6</item> <item>Tutorial 7</item> </string-array> <string name="action_settings">Settings</string> 

¿Alguna sugerencia sobre cómo hacer esto?

introduzca la descripción de la imagen aquí

2 Solutions collect form web for “Cómo expandir y contraer un elemento en listview”

Sólo tiene que establecer la visibilidad de la segunda vista de texto en View.GONE y View.VISIBLE cuando el usuario hace clic en el elemento. Implementar primero un OnItemClickListener. El uso de un ExpandableListView para esta tarea simple es excesivo.

En su controlador OnItemClick:

  TextView textView = (TextView)arg1.findViewById(R.id.textView2); if ( textView.getVisibility() == View.GONE) { //expandedChildList.set(arg2, true); textView.setVisibility(View.VISIBLE); } else { //expandedChildList.set(arg2, false); textView.setVisibility(View.GONE); } 

Debe utilizar ExpandableListview en lugar de ListView simple.

Actualizado

Sigue este tutorial y te ayudará a https://www.youtube.com/channel/UCbP2HeYGC3kfHjHLMPplZuQ él te enseñará cómo usar ListView usando BaseAdapter y esto aumentará tu confianza para implementar ExpandableListView por tu cuenta.

  • Listview recarga las imágenes ya cargadas mediante el cargador de imágenes Universal
  • Arrastrar y soltar en un `ListView`
  • Android: Mostrar la imagen en la vista de imagen por SimpleAdapter
  • ListView vacío a pesar de los elementos agregados al adaptador en algún momento al reanudar la aplicación
  • No se puede implementar el deslizamiento + comportamiento de desplazamiento en el panel deslizante con ListView en Android
  • Cómo agregar ListView personalizado en el diálogo de alerta android
  • ArrayAdapter y ListView - ArrayIndexOutOfBoundsException
  • Cómo funciona el mecanismo de reciclaje de ListView
  • Adaptador de vista personalizada con filtro Android
  • ¿Cómo cambiar el icono de la aplicación Android creada en Google App Inventor?
  • ListView + BaseAdapter - cómo notificar sobre el cambio en un solo artículo?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.