Autore Topic: Evento OnClick su List con MultiButton  (Letto 463 volte)

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Evento OnClick su List con MultiButton
« il: 23 Aprile 2013, 13:18:44 CEST »
0
Salve a tutti.

Mi trovo davanti ad un problema: ho seguito questa ottima guida
http://www.anddev.it/index.php/topic,1087.0.html
Risolvendo metà dei miei problemi.

Nel mio programma ho una funzione da me creata chiamata delItem(Int position, int richiesta) che cancella da una lista l'elemento position a secondo con modalità dettate dal parametro richiesta. Funzione e lista si trovano nel MainActivity. Il customAdapter creato da me funziona perfettamente e capta l'evento di pressione diverso se premo i bottoni o premo il resto dell'elemento lista. Ma in entrambi i casi devo lanciare la medesima funzione. Quando premo il resto dell'elemento non ho problema ma quando premo uno dei tanti bottoni non so come accedere a questa funzione.

In realtà un paio di metodi ce l'ho in mente ma non voglio pastrocchiare troppo  :-)

Offline TheTodd

  • Utente junior
  • **
  • Post: 58
  • Respect: +3
    • Mostra profilo
  • Dispositivo Android:
    samsung gs2
  • Play Store ID:
    sdmdev
  • Sistema operativo:
    window xp
Re:Evento OnClick su List con MultiButton
« Risposta #1 il: 23 Aprile 2013, 17:07:23 CEST »
0
se metti il codice che usi forse si capisce di più ...

Offline AleoxFalco

  • Nuovo arrivato
  • *
  • Post: 27
  • Poi ci penso
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    APC 87-50
  • Sistema operativo:
    Windows 7
Re:Evento OnClick su List con MultiButton
« Risposta #2 il: 23 Aprile 2013, 17:48:22 CEST »
0
ok ci provo:

nel MainActivity attivo l'evento di pressione item generico della lista
Codice (Java): [Seleziona]
listViewItem.setOnItemClickListener(new OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        //cose da fare
                        Item item=adapter.getItem(position);
                        Log.v(TAG,"Click riga"+item.getTavoloString());
                        delItem(item);
            }
        });
listViewItem.setAdapter(adapter);  

l'adapter è una classe estesa di arrayAdaper e uso questo pezzo per catturare l'evento di pressione tasto singolo
Codice (Java): [Seleziona]
                    //Evento di click singolo bottone
                    button.setOnClickListener(new OnClickListener() {
                            public void onClick(View view) {
                                //cose da fare
                                int idd=view.getId();
                                Log.v("MyItemAdapter","Click bottone"+String.valueOf(idd));
                                List.get(position).clrRichieste(idd);
                                if (List.get(position).isEmpty()) {List.remove(position);}
                                notifyDataSetChanged();
                                        String risposta="c"+String.valueOf(idd+1)+service.db.getTavoliCodice(item.getTavoloString());
                                        //Log.v("risposta:",risposta);
                                        service.sendDataUSB(risposta);//fnSendMessagetoService(risposta);
                            }
                    });

ora in entrambi sotto //cose da fare vedete brutto codice ma in realtà andrebbe la medesima funzione ovvero delItem(), presente nel Main Activity. delItem() utilizza varie funzioni e controlli, sia oggetti istanziati dentro il MainActivity ( connessione USB e riferimenti al db e service ). Per ora ho risolto passando al adapter custom tutti i riferimenti al service, quindi sia alla connessione usb e al db. Riferimento al Service vuol dire avere tutti gli strumenti adatti ma la funzione presente nel MainActivity faceva controlli specifici, che qui ora salto di gran passo. Vorrei passare il riferimento dell'activity in questione e lanciare direttamente la funzione come se mi trovassi dall'altra parte ma leggendo in giro non si può fare tanto facilmente...