2012-06-13 12 views
6

Sto cercando di ottenere qualcosa di simile. L'Elenco espandibile è costituito dai nomi di alcune categorie e quando si fa clic su un genitore, mostra l'elenco di tutti i bambini di quella categoria. Ora, supponiamo di voler aggiungere dinamicamente un bambino a qualsiasi categoria? Come faccio? Mantengo un pulsante con ogni genitore nell'elenco facendo clic su quale aggiungerebbe un nuovo figlio sotto di esso?Android ExpandableListView Parent con pulsante

Ma guardandosi attorno in forum diversi, ho capito che non è davvero facile impostare un gestore di clic su un pulsante in ogni genitore. Ma se questo è l'unico modo, qualcuno può darmi qualche codice di esempio, per favore?

Ho trovato questa discussione ma non è stata in grado di implementarla nel mio codice. Android Row becomes Unclickable with Button

+0

Come stai popolano la lista? Da un cursore? Con gli array? – Barak

+0

Sto usando gli array. – Swayam

risposta

6

L'aggiunta di un pulsante alla visualizzazione di gruppo non dovrebbe essere così difficile.

Credo che i seguenti dovrebbero funzionare (anche se non ho un progetto che utilizza un array con ExpandableListView da testare).

Non conosco il layout della riga di gruppo, quindi ne creerò uno qui per gli scopi di riferimento.

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> 

Poi, nel tuo metodo di getGroupView dal vostro adattatore:

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; 
} 
Problemi correlati