如何接收从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
}
}
如何调用此方法setListener(Listener listener)? –
这是我的代码YourAdapter适配器=新YourAdapter(); // YourAdapter类实现监听 //在这里说,适配器是你听者 setListener(适配器); –
setListener()方法将Listerer作为参数。所以我怎么能通过我的适配器对象 –