如何接收从Activity类的回调到android的ListView Adapter类中?

问题描述:

我有自定义列表视图和按钮的活动。现在 我想在适配器类中实现Activity按钮回调。 它在Android中的可能性如何? 请给我建议。如何接收从Activity类的回调到android的ListView Adapter类中?

第一个解决方案自己事件监听

应该由听众来完成,在活动创建Listener接口,未来实现适配器类接口。将Adapter对象设置为Activity的侦听器,并且当您想在Adapter中执行某些操作时,最后一个事件将运行侦听器方法。

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 
} 
} 

第二个解决方案适配器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 
    } 
} 

第三种解决方案 - 这是可以做到不带网络接口(不是好的做法)

只需添加方法你的适配器,并使用它:

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

如何调用此方法setListener(Listener listener)? –

+0

这是我的代码YourAdapter适配器=新YourAdapter(); // YourAdapter类实现监听 //在这里说,适配器是你听者 setListener(适配器); –

+0

setListener()方法将Listerer作为参数。所以我怎么能通过我的适配器对象 –