
- 在Adapter里面定义一个接口叫CallBack,接口的抽象方法为click(View view)
- 然后在getView方法里面对button的点击事件进行注册,并重写onClick方法,方法体为mCallBack.click(view),也就是说点击Button按钮时就去调用CallBack的click方法
- 在getView里面给button setTag,Tag值为position,这样可以记录button所在的具体位置
- 在Adapter的抽象方法里面加上CallBack参数,这样当listView设置adapter时就必须new CallBack,然后重写click方法。
这样就利用接口回调实现了在Adapter之外对Button的按钮点击事件处理的功能了
这可能就是传说中的回调吧!!!
SelfRoomAdapter.java代码
package com.example.model;
import java.util.List;
import com.example.ddf.R;
import com.example.javabean.Food;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;
public class SelfRoomFoodAdapter<T extends Food> extends BaseAdapter implements View.OnClickListener{
private Context context;
private List<T> list;
private CallBack mCallBack;
public SelfRoomFoodAdapter(Context context, List<T> list,CallBack callBack) {
this.context = context;
this.list = list;
mCallBack=callBack;
}
public interface CallBack{
public void clickd(View view);
public void clicke(View view);
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
public void onClick(View v) {
ImageView im= (ImageView)v;
switch (im.getId()){
case R.id.btn_delete: mCallBack.clickd(v);
break;
case R.id.btn_edit:mCallBack.clicke(v);
break;
default:break;
}
}
@Override
public View getView(int position, View co

本文介绍了在自定义ListView中处理子控件点击事件的方法,通过在Adapter内定义回调接口,实现在外部处理按钮点击事件,同时记录点击位置,详细阐述了如何避免主点击事件与子控件点击事件冲突。
最低0.47元/天 解锁文章
7543

被折叠的 条评论
为什么被折叠?



