0
我有自定義列表視圖和按鈕的活動。現在 我想在適配器類中實現Activity按鈕回調。 它在Android中的可能性如何? 請給我建議。如何接收從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作爲參數。所以我怎麼能通過我的適配器對象 –