定义接口描述在位于列表的position位置的item里点击子view的方法
public interface OnItemClickViewInsideListener<D>
{
/**
* @param position 列表项在列表中的位置
* @param item 列表项的数据
* @param view 列表项被点击的子视图
*/
public void onItemClickViewInside(int position, D item, View v);
}
在listActivity里实现这个接口
列表基本适配器BaseListAdapter<D>的构造函数里,传入这个OnItemClickViewInsideListener
BaseListAdapter里实现方法setOnClickInItemLisenter(int position, D item,View view)来给列表项里的子视图view设置点击监听器
/**
* @param position 列表项在列表中的位置
* @param item 列表项的数据
* @param view 列表项被点击的子视图
*/
public void setOnClickInItemLisenter(int position, D item, View view)
{
view.setOnClickListener(newOnClickInItemListener<D>(position, item,
onItemClickViewInsideListener));
}
该列表项内子视图点击监听器为
public class OnClickInItemListener<D> implements OnClickListener
{
private int position;
private T item;
private OnItemClickViewInsideListener<D> onItemClickViewInsideListener;
public OnClickInItemListener(int position,D item,
OnItemClickViewInsideListener<D> onItemClickViewInsideListener)
{
this.position = position;
this.item = item;
this.onItemClickViewInsideListener= onItemClickViewInsideListener;
}
public void onClick(View v)
{
if (onItemClickViewInsideListener== null)
{
return;
}
onItemClickViewInsideListener.onItemClickViewInside(position, item, v);
}
}
在点击该view时,将调用onItemClickViewInsideListener的onItemClickViewInside方法来具体处理点击事件,这样就回到了activity里。