2010-08-10 3 views
1

J'ai joué avec l'exemple suivant de l'application android.SimpleCursorTreeAdapter - Comment personnaliser la mise en page enfant

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.html

Je suis en mesure de déclencher une action lorsque cependant est cliqué sur un enfant, je ne peux pas sembler comprendre comment: 1. Personnalisez l'étiquette de chaque enfant. 2. Changez l'apparence de chaque enfant. (Par exemple, je voudrais que chaque enfant affiche le numéro de téléphone et ensuite deux boutons graphiques sur la droite.Chaque bouton aurait une action personnalisée liée à celui-ci.)

Tout code ou liens seraient grandement appréciés.

+0

Je fais quelque chose de similaire ICI http://stackoverflow.com/questions/10611927/simplecursortreeadapter-and-cursorloader – toobsco42

+0

Le lien vers l'exemple de code est cassé. Ce code est maintenant à https://android.googlesource.com/platform/development/+/master/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.java – LarsH

Répondre

1

Une solution possible pourrait être de définir un SimpleCursorTreeAdapter.ViewBinder en utilisant setViewBinder, un peu comme vous le feriez pour un SimpleCursorAdapter.

Je ne suis pas du tout sûr que cela fonctionnera, puisque je ne l'ai pas essayé, mais il semble être similaire. J'essaie de résoudre le même problème, donc si ça ne marche pas, je vais essayer de poster ici.

+0

Bien, alors ce que j'ai appris jusqu'à présent: Le SimpleCursorTreeAdapter.ViewBinder a été introduit dans l'API de niveau 5. Je vise un périphérique de niveau 4. :/ –

+0

Je suis nouveau sur Android et ce que je suis vraiment aux prises avec est de savoir comment "prendre en charge" la création des enfants afin que je puisse attribuer la mise en page et ajouter des éléments par programmation. Je suis capable de changer l'apparence de chaque enfant en utilisant seulement le XML, mais quand il s'agit de gérer des événements et d'attribuer des attributs dynamiques, je suis à peu près piétiné. – user412164

1

Vous pouvez remplacer "bindChildView" dans votre SimpleCursorTreeAdapter. Voilà comment je l'ai fait:

 class MyAdapter extends SimpleCursorTreeAdapter { 

     @Override 
    protected void bindChildView(View view, Context context, Cursor cursor, boolean isLastChild) { 
     // TODO Auto-generated method stub 
     super.bindChildView(view, context, cursor, isLastChild); 

     String title = cursor.getString(cursor.getColumnIndex(Alert.COL_DAY));    
     ((TextView)view.findViewById(R.id.child_day)).setText(title);   
    } 

     public MyAdapter(Context context, Cursor cursor, 
       int groupLayout, String[] groupFrom, int[] groupTo, 
       int childLayout, String[] childFrom, int[] childTo) { 

      super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom, childTo); 
     } 

     protected Cursor getChildrenCursor(Cursor groupCursor) { 
      int idColumn = groupCursor.getColumnIndex(Pill.COL_ID); 
      return Alert.list(db, groupCursor.getInt(idColumn), null, Alert.COL_DAY); 
     } 

    } 

, vous devez toujours fournir childFrom et childTo params à l'adaptateur lors de sa création, il les utilisera bindChildView.

Questions connexes