2012-06-13 21 views
6

Estoy tratando de lograr algo como esto. La lista expandible consiste en los nombres de ciertas categorías y cuando se hace clic en un elemento principal, se muestra la lista de todos los elementos secundarios de esa categoría. Ahora, supongamos que quiero agregar dinámicamente un niño a cualquier categoría? ¿Cómo hago eso? ¿Mantengo un botón con cada uno de los padres en la lista haciendo clic en el cual se agregaría un nuevo niño debajo de él?Android ExpandableListView padre con botón

Pero al mirar alrededor en diferentes foros, me di cuenta de que no es realmente fácil configurar un controlador de clic de botón dentro de cada elemento primario. Pero si esa es la única forma, ¿alguien puede darme algún código de muestra, por favor?

Encontré este hilo pero no pude implementarlo en mi código. Android Row becomes Unclickable with Button

+0

¿Cómo estás poblando la lista? De un cursor? Con arreglos? – Barak

+0

Estoy usando matrices. – Swayam

Respuesta

6

Agregar un botón a la vista de grupo no debería ser tan difícil.

Creo que lo siguiente debería funcionar (aunque no tengo un proyecto que use una matriz respaldada ExpandableListView para probar).

No conozco el diseño de fila de su grupo, así que lo haré aquí como referencia.

group_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/test" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 
    <TextView 
     android:id="@android:id/text1" 
     android:layout_width="wrap_content" 
     android:layout_height="35dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:gravity="center_vertical" 
     android:paddingLeft="?android:attr/expandableListPreferredItemPaddingLeft" 
     android:textAppearance="?android:attr/textAppearanceLarge" /> 
    <Button 
     android:id="@+id/addbutton" 
     android:layout_width="wrap_content" 
     android:layout_height="35dp" 
     android:focusable="false" 
     android:focusableInTouchMode="false" 
     android:text="Add" 
     android:textSize="12dp" /> 
</LinearLayout> 

Luego, en el método de getGroupView de su adaptador:

public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     View convertView = View.inflate(getApplicationContext(), R.layout.group_layout, null); 
     Button addButton = (Button)convertView.findViewById(R.id.addButton); 

     addButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // your code to add to the child list 
      } 
     }); 
    }   
    TextView textView = (TextView)convertView.findViewById(R.id.text1); 
    textView.setText(getGroup(groupPosition).toString()); 
    return convertView; 
} 
Cuestiones relacionadas