2016-07-27 11 views

Antwort

2

erste Lösung OWN LISTENER

Es sollte von den Hörern erfolgen, Listener-Schnittstelle in Aktivität erstellen, implementieren nächste Schnittstelle in Adapterklasse. Setzen Sie das Adapter-Objekt als Listener der Aktivität und führen Sie zuletzt Listener-Methoden aus, wenn Sie etwas in Adapter durchführen möchten.

class Activity{ 

private Listener listener; 

//your activity listener interface 
public interface Listener{ 

     onButtonClick(); 
} 


private void setListener(Listener listener){ 

    this.listener=listener; 
} 

//example method 
private void youMethod(){ 

    YourAdapter adapter=new YourAdapter();//YourAdapter class implements Listener 
    //here You say that adapter is You listener 
    setListener(adapter); 

    //bind button 
    Button button = (Button)findViewById(R.id.buttonName); 
    button.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) 
    { 

     //run listener after button click 
     buttonIsClicked(); 
     //or 
     //listener.onButtonClick(); 
    } 
    }); 

} 

private void buttonIsClicked(){ 
    //here use method 
    listener.onButtonClick(); 
} 
} 


//EXAMPLE ADAPTER 
class YourAdapter implements Activity.Listener{ 

//...adapter code 

void onButtonClick(){ 

    //your code on button click 
} 
} 

zweite Lösung Adapter als OnClickListener

class Activity{ 


//example method 
private void youMethod(){ 

    YourAdapter adapter=new YourAdapter(); 

    //bind button 
    Button button = (Button)findViewById(R.id.buttonName); 
    //set adapter as onClickListener 
    button.setOnClickListener(adapter); 

} 

} 


//EXAMPLE ADAPTER 
class YourAdapter implements OnClickLstener{ 

//...adapter code 

    public void onClick(View v) 
    { 

     //adpater code after click 
    } 
} 

dritte Lösung - ES KANN OHNE Schnittstelle erfolgen (keine gute Praxis)

Gerade Methode Ihren Adapter hinzufügen und es verwenden, :

button.setOnClickListener(new OnClickListener() { 
    public void onClick(View v) 
    { 

     //use adapter 
     adapter.onButtonClick(); 
    } 
    }); 


//EXAMPLE ADAPTER WITHOUT INTERFACE 
class YourAdapter{ 

//...adapter code 

void onButtonClick(){ 

    //your code on button click 
} 
} 
+0

Wie diese Methode aufgerufen wird setListener (Listener listener)? –

+0

Es ist in meinem Code YourAdapter adapter = new YourAdapter(); // YourAdapter Klasse implementiert Listener // hier Sie sagen, dass Adapter Sie Listener ist setListener (Adapter); –

+0

Die Methode setListener() verwendet den Listener als Argument. so, wie kann ich übergeben mein Adapter-Objekt –