我有一个带有自定义Listview和按钮的Activity。 现在
我想在适配器类中实现Activity按钮回调。
在Android中如何实现?
请给我建议。
第一个解决方案拥有者
它应该由侦听器完成,在Activity中创建侦听器接口,在Adapter类中创建下一个实现接口。 要将Adapter对象设置为Activity的侦听器,并且要在Adapter中执行某些操作时最后运行Listener方法。
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
}
}
第二种解决方案适应者
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 adapter = new YourAdapter(); // YourAdapter类实现了监听器//这里您说适配器是您的监听器setListener(adapter);
setListener()方法将Listerer用作参数。 所以我该如何传递我的适配器对象
您的适配器对象必须实现Listener接口,以便可以通过它,这是接口的典型用法。
检查我的代码-类YourAdapter实现Activity.Listener
需要更多帮助吗?
有可能在Adapter类中没有实现Listener可能吗?
是的,请检查我的答案,这是第三种解决方案。
其实我的问题在这里:stackoverflow.com/questions/38606594/
让我们继续聊天中的讨论。