Autore Topic: Controllo Personalizzato e evento  (Letto 987 volte)

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Controllo Personalizzato e evento
« il: 12 Giugno 2012, 15:04:52 CEST »
0
ciao.
Ho creato un contollo personalizato ereditando da linearlayout e inserendo al suo interno un immagine e un button per semplicità.
uso questo custom control creandolo e aggiungendolo ad un altro layout nell activity principale tramite codice.
ora:all' interno del custom control ho accesso all'evento di click sul button, ma come faccio ad agganciarmi a questo evento dall activity?
per es:
se premo il pulsante del custom control , all interno della classe del custom control carico un immagine e la visualizzo , ma se volessi gestire il click del pulsante dall activity?
grazie.

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Controllo Personalizzato e evento
« Risposta #1 il: 19 Giugno 2012, 10:29:05 CEST »
0
Crea all'interno del tuo controllo un'interfaccia pubblica (OnMioEventoListener ad esempio) con un metodo che rappresenterà ciò che dall'esterno dovrà essere implementato per gestire l'evento (mioEventoAction ad esempio). Una variabile privata del tipo dell'interfaccia con il relativo setter. Nell'evento click che gestivi all'interno del tuo controllo ora richiami (magari dopo aver verificato che non sia null) il metodo mioEventoAction della tua variabile privata. Dichiari che l'activity implementi la tua interfaccia ed è tutto fatto. Ecco due righe d'esempio

Il tuo controllo:
Codice (Java): [Seleziona]
public class MyControl extends LinearLayout{
  //Interfaccia che verrà implementata dall'activity
  public interface OnMyClickListener {
       public void onMyClick(View view);
  }
  private ImageView image=null;
  private TextView text=null;
  //Variabile e setter per per l'esecuzione del metodo OnMyClick
  private OnMyClickListener  listener=null;

  public setOnMyClickListener(OnMyClickListener listener){
    this.listener=listener;
  }
  ...........
  //Immaginando di assegnare l'evento click all'image nel costruttore del controllo
 public MyControl(.....){
   .........
   image.setOnClickListener(new OnClickListener(){
        public void onClick(View view){
           if(listener!=null){
              listener.onMyClick(view);
           }
        }
   }

Nella tua activity:
Codice (Java): [Seleziona]
public class MyActivity extends Activity implements OnMyClickListener {
.....
//Da qualche parte dopo aver creato il tuo controllo
myControl.setOnMyClickListener(this);
..........
public void onMyClick(View view){
 //Qui il tuo codice. La view è l'ImageView del tuo controllo
}
}
Odio l'inglese e per un informatico non è il massimo

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:Controllo Personalizzato e evento
« Risposta #2 il: 19 Giugno 2012, 13:18:30 CEST »
0
e se volessi gestire n elementi con n eventi è sufficente aggiungere all' interfaccia OnMyClickListener  una funzione e implementare gli eventi ?
scusa ma non sono pratico di java.
grazie.

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Controllo Personalizzato e evento
« Risposta #3 il: 19 Giugno 2012, 15:08:04 CEST »
0
Se intendi che hai n controlli tutti del tipo MyControl la cosa è gia così: ad ogni oggetto MyControl fai il setOnMyClickListener passandogli il this. Per discrimare quale controllo è hai tantissime strade: dall'assegnare degli id, all'assegnare dei tag, alla modifica del metodo onMyClickListener aggiungendo altri parametri.
Odio l'inglese e per un informatico non è il massimo

Offline giuseppe500

  • Utente junior
  • **
  • Post: 110
  • Respect: 0
    • Mostra profilo
Re:Controllo Personalizzato e evento
« Risposta #4 il: 19 Giugno 2012, 15:56:09 CEST »
0
no, intendevo che uno stesso controllo personalizzato ha piu eventi.
è l'ultima cosa che ti chiedo poi metto solved.
grazie 1000

Offline pivoide

  • Utente junior
  • **
  • Post: 133
  • Respect: +19
    • Mostra profilo
  • Dispositivo Android:
    Samsung galaxy tab 10.1
  • Play Store ID:
    codicerosso
  • Sistema operativo:
    Ubuntu 11.04
Re:Controllo Personalizzato e evento
« Risposta #5 il: 19 Giugno 2012, 17:25:24 CEST »
0
Basta aggiugere una nuova interfaccia con la stessa tecnica descritta prima e chiamare il metodo del relativo listener sull'evento ulteriore che vuoi intercettare.
Odio l'inglese e per un informatico non è il massimo