listview的点击/长按事件很简单,和普通控件的点击/长按事件是一样的,不同的是由于它是列表,事件里面会加上item,指的是listview里面每个item的点击/长按事件
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ToastUtils.showShort("点击"+list.get(position));
}
});
mListView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
ToastUtils.showShort("长按"+list.get(position));
return false;
}
});
但是它每次点击/长按都代表了这个item的整体,如果我们想点击item里面某一个控件呢,我们可以使用下面的方法,在adapter里面写一个点击事件的接口,然后在activity里面实现这个接口就行了
adapter里面定义接口
private onItemListener mOnItemListener;
public void setOnItemClickListener(onItemListener mOnItemListener) {
this.mOnItemListener = mOnItemListener;
}
public interface onItemListener {
void onSelectClick(int i);
}
和item里面想点击的控件进行绑定
holderView.mTextView1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mOnItemListener.onSelectClick(position);
}
});
然后是在activity里面实现
main3Adapter.setOnItemClickListener(new Main3Adapter.onItemListener() {
@Override
public void onSelectClick(int i) {
ToastUtils.showShort("点击"+i);
}
});
这种方法在recyclerview里面同样适用