Aller au contenu

Problème avec ExpandableListView


Cuillère

Recommended Posts

Bonjour, j'utilise ce code :

public class MyExpandableListAdapter extends BaseExpandableListAdapter {

       private String[] groups ;
       private String[][] children;
	public MyExpandableListAdapter(String[] groups,String[][] children){
		this.groups = groups;
		this.children = children;
	}


       public Object getChild(int groupPosition, int childPosition) {
           return children[groupPosition][childPosition];
       }

       public long getChildId(int groupPosition, int childPosition) {
           return childPosition;
       }

       public int getChildrenCount(int groupPosition) {
           return children[groupPosition].length;
       }

       public TextView getGenericView(int gravity) {
           // Layout parameters for the ExpandableListView
           AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
                   ViewGroup.LayoutParams.FILL_PARENT, 32);

           TextView textView = new TextView(FiltersAffiner.this);
           textView.setLayoutParams(lp);
           // Center the text vertically
           textView.setGravity(gravity);
           // Set the text starting position
           textView.setPadding(36, 0, 0, 0);
           return textView;
       }

       public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
               View convertView, ViewGroup parent) {


        	if (convertView == null)
           {
               LayoutInflater inflater = LayoutInflater.from(FiltersAffiner.this);
               convertView = inflater.inflate(R.layout.element_expandable_affiner, null);

           }

           TextView txtView = (TextView)convertView.findViewById(R.id.txtValue);
           txtView.setText(getChild(groupPosition, childPosition).toString());

           TextView txtViewNb = (TextView)convertView.findViewById(R.id.txtNb);
           txtViewNb.setText(""+expAlstFilterCell.get(parent).get(childPosition).number);



           convertView.setFocusableInTouchMode(true);
           return convertView;

       }

       public Object getGroup(int groupPosition) {
           return groups[groupPosition];
       }

       public int getGroupCount() {
           return groups.length;
       }

       public long getGroupId(int groupPosition) {
           return groupPosition;
       }

       public View getGroupView(int groupPosition, boolean isExpanded, View convertView,
               ViewGroup parent) {

        	if (convertView == null)
           {
               LayoutInflater inflater = LayoutInflater.from(FiltersAffiner.this);
               convertView = inflater.inflate(R.layout.element_expandable_affiner, null);

           }

           TextView txtView = (TextView)convertView.findViewById(R.id.txtValue);
           txtView.setText(getGroup(groupPosition).toString());




           convertView.setFocusableInTouchMode(true);
           return convertView;
       }

       public boolean isChildSelectable(int groupPosition, int childPosition) {
           return true;
       }

       public boolean hasStableIds() {
           return true;
       }

   }

Mais les children et les parents de ma liste ne sont plus clickables. Si quelqu'un sait comment résoudre ce problème, merci ! :)

Lien vers le commentaire
Partager sur d’autres sites

Arf, l'expandableListView, j'en ai fait des cauchemars, je fouille dans mes programmes et je te dis si je trouve quelque chose ;)

P.S : Après mes petites fouilles, il faut definir les Listener dans la méthode getGroupView :)

Si ca ne suffit pas je continuerai a chercher ^^

Lien vers le commentaire
Partager sur d’autres sites

Par exemple ici :

public View getChildView(int groupPosition, int childPosition, boolean isLastChild,
               View convertView, ViewGroup parent) {


               if (convertView == null)
           {
               LayoutInflater inflater = LayoutInflater.from(FiltersAffiner.this);
               convertView = inflater.inflate(R.layout.element_expandable_affiner, null);

           }

           TextView txtView = (TextView)convertView.findViewById(R.id.txtValue);
           txtView.setText(getChild(groupPosition, childPosition).toString());

           TextView txtViewNb = (TextView)convertView.findViewById(R.id.txtNb);
           txtViewNb.setText(""+expAlstFilterCell.get(parent).get(childPosition).number);

           txtViewNb.setOnClickListener(new View.OnClickListener() {

		@Override
		public void onClick(View v) {
			//Ici ce que tu veux que ca fasse
     } 




           convertView.setFocusableInTouchMode(true);
           return convertView;

       }

A moins que je n'ai mal compris ta demande et que tu que le depliement ne marche plus

Lien vers le commentaire
Partager sur d’autres sites

J'ai testé, ça marche, merci !

Juste encore un problème.

J'ai 2 textview dans mon layout customisé, mais pas moyen de les placer correctement. J'ai ceci dans le XML :

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="wrap_content">

 <TextView
   android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/txtValue"
 android:layout_alignParentLeft="true"
 android:textSize="16dip"
 android:layout_marginRight="10dip"></TextView>

   <TextView
   android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:id="@+id/txtNb"
 android:layout_alignParentRight="true"
 android:textSize="16dip"
 android:layout_marginRight="10dip"></TextView>
</RelativeLayout>

Mais les 2 sont collées à gauche du layout.

EDIT : un reboot d'Eclipse et ça remarche.

Mais toujours un autre problème.

Voici le layout qui contient 3 ExpandableListViews ajoutées par code :

<RelativeLayout
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@+id/RelativeLayoutAffiner">

<RelativeLayout
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:id="@+id/relAffiner">
 	<TableLayout
 	  	android:layout_width="fill_parent"
 		android:layout_height="fill_parent"
 		android:id="@+id/tableLayoutAffiner">
 		</TableLayout>
</RelativeLayout>

</RelativeLayout>

Je n'arrive pas à les afficher correctement, lorsque les 3 sont ouvertes, pas de place pour tout afficher sur l'écran, et ça fait un truc assez horrible. Si tu as une solution pour ça, merci ! :)

Les listes sont dans des TableRow du tableLayout

Lien vers le commentaire
Partager sur d’autres sites

En fait j'ai l'impression que tu n'utilises pas l'expandablelistview comme il le faut ^^

Ces 3 menus sont toujours fixe ?

Une expandablelistview est comme une listeview, il faut la lier a un adapter qui s'occupera des views.

Je pense que tu as fait 3 expandablelistview, ce qui explique que tu ne puisses scroller.

Normalement tu devrais avoir :

ExpandableListView

--> Child 1

--> Child 2

--> Child 3

Et là il pourra scroll entre les child

Hors tu as ( je présume ) :

ExpandableListView1

ExpandableListView2

ExpandableListView3

Lien vers le commentaire
Partager sur d’autres sites

Oui je suis au courant, j'ai 3 ExpandableListViews, c'est ce que je veux. Mais je n'arrive pas à les agencer comme je veux. Les children de chaque liste se scroll comme il faut, c'est juste les ExpandableListView qui ne sont pas fixes lorsqu'elles sont déroulées.

Lien vers le commentaire
Partager sur d’autres sites

D'instinct je dis non.

Je vais essayer de m'expliquer ^^

Le scroll observe les gestes de glissement verticaux, de même que les expendablelistview qui seraient dedans. De fait comment le système saurait si le mouvement est destiné aux expendable ou au scroll.

Je ne suis pas un monstre en théorie ( ni même en pratique remarque ), mais il me semble que c'est la bonne explication ;)

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...