2016-08-08 53 views
0

Ich versuche herauszufinden, wie erweiterbare Listenansicht setOnItemClickListener von Schaltfläche in der untergeordneten Ansicht implementiert implementieren. Hier ist, was ich bisher:Wie implementiere ich die erweiterbare Listenansicht setOnItemClickListener von der Schaltfläche in der untergeordneten Ansicht?

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); 
     } 
    }); 
} 

Im Hauptansicht habe ich realisiert:

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

Ich erwarte ((ExpandableListView) Eltern) .performItemClick (v1, Positionen, 0 dies irgendwie ein machen Aufruf an den Event-Handler in ExpandableListView.setOnItemClickListener, die derzeit nicht stattfindet.Ich möchte einen Anruf von einer Schaltfläche klicken Sie auf in der untergeordneten Ansicht, um einen Anruf auf erweiterbare ListView Element klicken Listener.

+0

Können Sie klarstellen, was Sie fragen? Was ist das Ergebnis des Codes, den Sie hier veröffentlicht haben, und welche Ergebnisse haben Sie erwartet? (Je nachdem, was Sie fragen, Protokolle können auch hilfreich sein). – EJoshuaS

+1

Ich erwarte ((ExpandableListView) Eltern) .performItemClick (v1, Positionen, 0 dies irgendwie einen Anruf an dropableListView.setOnItemClickListener was nicht geschieht. Ich möchte einen Anruf von einem Button klicken Sie auf in der untergeordneten Ansicht zu machen machen Ein Aufruf der erweiterbaren Listenansicht setOnItemClickListener –

+0

Was passiert jetzt? Gibt es eine Ausnahme, wenn Sie ((ExpandableListView) Eltern) .performItemClick (v1, Positionen, 0), oder wird es erfolgreich aufgerufen und nur nichts tun? "parent" an dieser Stelle null? Ich sehe nicht, wo Sie dies einstellen. Ich denke, dass Sie wahrscheinlich nicht diese Variable an diesem Punkt verwenden möchten, werden Sie wahrscheinlich eine andere Möglichkeit zum Abrufen der erweiterbaren Liste möchten. Warum erhalten Sie nicht einfach die erweiterbare Liste mit einem anderen FindViewById-Aufruf? – EJoshuaS

Antwort

0

Ich denke, dass die Methode unten:

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

ist nicht ordnungsgemäß implementiert. Wenn Sie eine Operation mit der ExpandableListView ausführen, können Sie sie einfach mit FindViewById (...) abrufen.

Ich denke, dass dies auch der falsche Ort ist, um den Button-Event-Listener zu setzen, da er nicht speziell mit den einzelnen Kind-Views zusammenhängt.

+1

Ich bekomme keine Ausnahme, aber der setOnItemClickListener wird nicht aufgerufen –

+0

setOnItemClickListener selbst sollte nicht aufgerufen werden - es ist nur * set * der onItemClickListener. Es ist nicht der Event-Handler. – EJoshuaS