2016-08-08 1 views
0

J'essaie de comprendre comment implémenter la vue liste extensible setOnItemClickListener à partir du bouton présent dans la vue enfant. Voici ce que j'ai jusqu'à présent:Comment est-ce que j'implémente l'affichage Listable extensible setOnItemClickListener du bouton présent dans la vue enfant?

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
    if (convertView == null) { 
     LayoutInflater infalInflater = (LayoutInflater) context 
      .getSystemService(context.LAYOUT_INFLATER_SERVICE); 
     convertView = infalInflater.inflate(R.layout.weekly_event_child_items, null); 
    } 

    Button mybutton = (Button) convertView.findViewById(R.id.button2); 
    mybutton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v1) { 
      ((ExpandableListView) parents).performItemClick(v1,positions, 0); 
     } 
    }); 
} 

En vue principale, j'ai mis en œuvre:

expandableListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     System.out.println("clicked"); 
    } 
}); 

J'attends ((ExpandableListView) parents) .performItemClick (v1, positions, 0 ceci pour faire en quelque sorte un appel au gestionnaire d'événements dans expandableListView.setOnItemClickListener, ce qui ne se produit pas actuellement.Je veux faire un appel d'un clic sur un bouton dans la vue enfant pour faire un appel à l'écouteur de l'élément clickview extensible listview

+0

Pouvez-vous clarifier ce que vous demandez? Quel est le résultat du code que vous avez posté ici et quels sont les résultats que vous attendiez? (En fonction de ce que vous demandez, les journaux peuvent également vous être utiles). – EJoshuaS

+1

Je m'attends à ce que ((ExpandableListView) parents) .performItemClick (v1, les positions, 0 ceci pour faire un appel à expandableListView.setOnItemClickListener qui ne se passe pas.Je veux faire un appel à partir d'un clic de bouton présent dans la vue enfant pour faire un appel à listView extensible setOnItemClickListener –

+0

Que se passe-t-il maintenant? Existe-t-il une exception quand vous faites (ExpandableListView parents) .performItemClick (v1, positions, 0), ou est-il appelé avec succès et ne rien faire? Incidemment, est "parent" null à ce stade? Je ne vois pas où vous définissez ceci. Je pense que vous ne voulez probablement pas utiliser cette variable à ce stade, vous voudrez probablement une manière différente de récupérer la liste extensible. Pourquoi ne pas simplement obtenir la liste extensible avec un autre appel FindViewById? – EJoshuaS

Répondre

0

Je pense que la méthode ci-dessous:

public void onClick(View v1) { 
    ((ExpandableListView) parents).performItemClick(v1,positions, 0); 
} 

n'est pas implémentée correctement. Si vous effectuez une opération avec ExpandableListView, vous pouvez simplement le récupérer avec FindViewById (...).

Je pense que c'est aussi l'endroit incorrect pour définir l'écouteur d'événement de bouton, car il n'est pas spécifiquement lié aux vues enfant individuelles.

+1

Je ne reçois aucune exception mais le setOnItemClickListener ne s'appelle pas –

+0

setOnItemClickListener ne doit pas être appelé - tout ce qu'il fait est * set * onItemClickListener. Ce n'est pas lui-même le gestionnaire d'événement. – EJoshuaS