Autore Topic: ExpandableListView: intercettare il click di un button in un Child  (Letto 1188 volte)

Offline eos_300

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Salve a tutti, posto un mio problema con le ExpandableListView, nella speranza di risolvere una cosa di cui non capisco il funzionamento.
Come da oggetto, avrei bisogno di intercettare il click di un paio di Button inserito all'interno della child di una explistview (nello screenshot allegato, corrispondono ai due pulsanti "scheda cliente"  e "set ordine").
il problema nasce dal fatto che, apparentemente, nel codice che ho riportato sotto, sembra che non avvenga niente, nel senso che: o non passa dalla funzione che ho implementato, oppure non ho capito come funziona quel listener.
Qualcuno è mai incappato in questo passaggio?
Ho provato a cercare in rete ma, anche se ho trovato diverse persone con lo stesso problema, nessuno sembra aver avuto una risposta o aver risolto.
Grazie, ciao
Marino

ecco il pezzo di codice:
Codice: [Seleziona]
myExpandableListView.setOnChildClickListener(new OnChildClickListener() {
       
        @Override
        public boolean onChildClick(ExpandableListView arg0, View arg1, int groupPosition, int childPosition, long arg4) {
                ExpandableListAdapter adapter = arg0.getExpandableListAdapter();
               
                Log.i(TAG, "qui non passa...");
       
                return false;
        }
});

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #1 il: 24 Marzo 2011, 11:07:18 CET »
0
parlo da ignorante di expandable list view...
Non è che il listener è su tutta la childView invece che sui bottoni? hai provato a cliccare sulla view?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline eos_300

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #2 il: 24 Marzo 2011, 11:12:28 CET »
0
si, il listener mi è sembrato di capire che dovrebbe essere su tutta la child view, e per arrivare ai pulsanti immagino che dovrò passare per l'adapter associato alla expandable.
ma il problema è proprio il fatto che apparentemente non "sente" il click sulla child view: credo che se risolvo quella poi arrivo anche ai pulsanti

Offline Nicola_D

  • Moderatore
  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #3 il: 24 Marzo 2011, 11:17:05 CET »
0
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline davegrohl89

  • Nuovo arrivato
  • *
  • Post: 19
  • Respect: 0
    • Mostra profilo
  • Sistema operativo:
    Mac OS X Lion
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #4 il: 22 Marzo 2012, 16:11:21 CET »
0
Ciao ragazzi!!
Mi trovo anche io in questa situazione: dovrei aggiungere un button ai child di un'expandable list ed intercettare l'evento..volevo sapere come si era risolto?? Ora sto guardando l'esempio delle ListView ma non capisco come "collegarlo" al mio problema..

Offline pajehali

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #5 il: 14 Gennaio 2013, 16:53:53 CET »
0
ciao ragazzi, riesumo questo vecchio topic per fare la seguente domanda:

una volta cliccato un elemento della lista come posso lanciare un textview relativo all'elemento stesso??

Offline elfo83

  • Utente normale
  • ***
  • Post: 283
  • Respect: +23
    • Mostra profilo
  • Sistema operativo:
    Mac OS 10.8.2
Re:ExpandableListView: intercettare il click di un button in un Child
« Risposta #6 il: 16 Gennaio 2013, 23:39:55 CET »
0
Pajehali non sei stato molto chiaro nella tua domanda, comunque in generale se dovete aggiungere un listener sui children della vostra ExpandablelistView dovete implementare setOnChildClickListener in questo modo (faccio l'esempio in cui i figli sono JSONObject, ma il ragionamento è valido per ogni tipo di oggetto che state manipolando):

Codice (Java): [Seleziona]
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
         
                @Override
                public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
                   JSONObject e = (JSONObject)adapter.getChild(groupPosition, childPosition);
               
                try
                {
                        //qui fate tutto quello che dovete fare con l'oggetto. L'importante è che voi recuperiate l'oggetto tramite il vostro adapter con il metodo      getChild(groupPosition,   childPosition)
                     
               
                }
                catch(Exception e1){}
                    return false;
            }
        });  

Se invece volete aggiungere un listener sopra un bottone o una EditText che si trova nel all'interno del child, dovete aggiungere il listener nel vostro metodo  dell'adapter:

Codice (Java): [Seleziona]
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
{
.
.
.
.
.
     addComment.setOnClickListener(new OnClickListener(){
                                                       
                                                                @Override
                                                                public void onClick(View v)
                                                                {
                                                                        addComment.setText("");
                                                                       
                                                                }
                                                });
}