Ich habe Aktivität mit einer benutzerdefinierten Listview und Schaltfläche. Jetzt Ich möchte Activity Button Callback in der Adapterklasse implementieren. Wie ist es in Android möglich? Bitte geben Sie mir einen Vorschlag.Wie Rückruf von Activity-Klasse in ListView Adapter-Klasse in Android erhalten?
0
A
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
}
}
Wie diese Methode aufgerufen wird setListener (Listener listener)? –
Es ist in meinem Code YourAdapter adapter = new YourAdapter(); // YourAdapter Klasse implementiert Listener // hier Sie sagen, dass Adapter Sie Listener ist setListener (Adapter); –
Die Methode setListener() verwendet den Listener als Argument. so, wie kann ich übergeben mein Adapter-Objekt –