Autore Topic: unico listener/funzione per più bottoni  (Letto 908 volte)

Offline lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
unico listener/funzione per più bottoni
« il: 19 Maggio 2011, 14:52:17 CEST »
0
Salve, ho creato un layout dove inserisco n bottoni, sarebbe possibile legarli tutti ad un unico listener senza doverli istanziare ( final Button mio_pulsante1=(Button)findViewById..... final Button mio_pulsante2=(Button)findViewById.....) uno ad uno?
Nel caso di un pulsante singolo uso direttamente l'attributo xml nel tag button android:onClick="faiQuesto" ma in questo caso non saprei come far tornare al click l'id del pulsante clickato
thanx

Offline Nicola_D

  • 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:unico listener/funzione per più bottoni
« Risposta #1 il: 19 Maggio 2011, 14:55:18 CEST »
+1
Salve, ho creato un layout dove inserisco n bottoni, sarebbe possibile legarli tutti ad un unico listener senza doverli istanziare ( final Button mio_pulsante1=(Button)findViewById..... final Button mio_pulsante2=(Button)findViewById.....) uno ad uno?
Nel caso di un pulsante singolo uso direttamente l'attributo xml nel tag button android:onClick="faiQuesto" ma in questo caso non saprei come far tornare al click l'id del pulsante clickato
thanx
il metodo che crei ha come firma faiQuesto(View v)
per prendere l'id fai int id = v.getId().
poi switch(id) e via dicendo
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 lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #2 il: 19 Maggio 2011, 16:56:25 CEST »
0
Perfetto, ho utilizzato l'id con findViewById(id); per creare un istanza con il quale interagire
 ;-)

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:unico listener/funzione per più bottoni
« Risposta #3 il: 19 Maggio 2011, 18:09:01 CEST »
+1
dentro il metodo che risponde all'evento? per intendersi riferendomi all'esempio di Nicola_D, dentro faiQuesto(View v)?

Se così la creazione dell'istanza all'interno è solo uno spreco di risorse in quanto View v è già un'istanza del tuo button. necessita solo del cast opportuno in quanto View generica


Ciao
gianni

Offline lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #4 il: 20 Maggio 2011, 14:27:49 CEST »
0
si dentro faiQuesto do l'istanza al pulsante e gli faccio cambiare il background cosi:

int id = view.getId();
Button button = (Button) findViewById(id);
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.miaimg));

purtoppo non so come potrei richiamarlo in modo dispendioso (sono ai primi passi con android)
se mi spieghi mi faresti un grosso piacere

Offline Nicola_D

  • 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:unico listener/funzione per più bottoni
« Risposta #5 il: 20 Maggio 2011, 14:57:27 CEST »
0
si dentro faiQuesto do l'istanza al pulsante e gli faccio cambiare il background cosi:

int id = view.getId();
Button button = (Button) findViewById(id);
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.miaimg));

purtoppo non so come potrei richiamarlo in modo dispendioso (sono ai primi passi con android)
se mi spieghi mi faresti un grosso piacere

Fai:
Button button = (Button) view;
button.setBackgroundDrawable(getResources().getDrawable(R.drawable.miaimg));
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 lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #6 il: 20 Maggio 2011, 15:06:59 CEST »
0
funziona, immagino che quindi al click il pulsante invia 'se stesso' al mio metodo giusto?
visto che ci sono ...da view non posso tirare fuori anche l'id testuale che setto nel main.xml (e in generale dove posso trovare l'elenco dei metodi/attributi di view?)

grazie cmq forum fantastico  :-*

Offline Nicola_D

  • 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:unico listener/funzione per più bottoni
« Risposta #7 il: 20 Maggio 2011, 16:04:43 CEST »
0
funziona, immagino che quindi al click il pulsante invia 'se stesso' al mio metodo giusto?
visto che ci sono ...da view non posso tirare fuori anche l'id testuale che setto nel main.xml (e in generale dove posso trovare l'elenco dei metodi/attributi di view?)

grazie cmq forum fantastico  :-*
View | Android Developers
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 lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #8 il: 20 Maggio 2011, 17:51:07 CEST »
0
si li ci sono arrivato dopo aver scritto il post, però non ho trovato nulla per tirare fuori l'id testuale che metto ai pulsanti nel xml

Offline giannign1

  • Utente junior
  • **
  • Post: 85
  • Respect: +2
    • chiedetelo_se_lo_volete
    • Mostra profilo
  • Dispositivo Android:
    Google Nexus One
  • Play Store ID:
    giannign1
  • Sistema operativo:
    Windows 7
Re:unico listener/funzione per più bottoni
« Risposta #9 il: 21 Maggio 2011, 14:31:17 CEST »
0
intendi il parametro "android:id=" ?

se quello basta che fai v.getId(); senza nemmeno bisogno di avere effettuato il cast  a  Button

Offline lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #10 il: 23 Maggio 2011, 15:07:04 CEST »
0
esattamente, ma nell'xml io come id metto 'mio_bottone' mentre ho visto che getId torna un necessariamente un valore int
è cosi o sbaglio? come faccio a tornare la String mio_bottone?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:unico listener/funzione per più bottoni
« Risposta #11 il: 23 Maggio 2011, 15:12:03 CEST »
0
esattamente, ma nell'xml io come id metto 'mio_bottone' mentre ho visto che getId torna un necessariamente un valore int
è cosi o sbaglio? come faccio a tornare la String mio_bottone?

Quello che tu scrivi con la stringa "mio_bottone" per lui è un INT.

Puoi però risalire dal nome all'ID in questo modo: Accedere alle risorse usando la stringa del nome - Android Developers Italia
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #12 il: 23 Maggio 2011, 16:25:42 CEST »
0
nel mio caso io devo risalire dal click all'id testuale
ho provato a fare questo
Codice (XML): [Seleziona]
<Button android:id="@+id/foofoo"
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:text="test"
           android:onClick="stampaId" />

Codice (Java): [Seleziona]
public void stampaId(View view) {
        EditText edittext = (EditText) findViewById(R.id.edittext);
        int id = view.getId();
        edittext.setText(id);
    }

ma al click nel campo di testo mi torna false e non foofoo, cosa sbaglio devo convertire la variabile id oppure altro?

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:unico listener/funzione per più bottoni
« Risposta #13 il: 23 Maggio 2011, 16:40:30 CEST »
0
Come ti ho detto sopra, per lui "foofoo" è un INT.

Non sono a conoscenza della possibilità di risalire dall'INT al nome letterale scelto nel sorgente.
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline lecter

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    asus eee pad transformer
  • Sistema operativo:
    ubuntu 11.04
Re:unico listener/funzione per più bottoni
« Risposta #14 il: 23 Maggio 2011, 16:52:13 CEST »
0
ok grazie cmq, stavo già utilizzando gli id numerici, mi sarebbe stato utile avere il testuale, ma fa lo stesso
 ;-)