我想将一个通用的onitemclicklistener附加到一个数组列表中,列表视图的每一行中有3个元素,我希望它们可以被点击,所有这些都做不同的事情。我想做这样的事情
自定义侦听器
public OnItemClickListener customListener(){
OnItemClickListener listener = new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int viewId = view.getId();
Log.d(app.TAG,"position " + String.valueOf(position) + " id " + String.valueOf(id));
switch(viewId){
case R.id.tvPromote:
//promote text view hit
break;
case R.id.tvComment:
//comment text view hit
break;
}
}
};
return listener;
}
我之前在我的活动中设置了这个
feedArray = new ArrayList<Object>();
feedAdapter = new FeedAdapter(this, feedArray);
listFeed.setAdapter(feedAdapter);
listFeed.setOnItemClickListener(customListener());
但点击的thew视图始终只是整行的布局,我想点击特定元素。
我知道我可以将onviewclicklisteners附加到数组适配器中的特定元素,但我需要访问活动中的方法,这些方法开始变得非常hacky。
答案 0 :(得分:0)
点击是由父母onTouch
听众委派的,因此可以在那里截获。您需要的代码将根据您的项目而有所不同,但可以返回一个布尔值,让系统知道仍有未处理的事件需要处理。 True
会让你知道你已经消费了这个事件,如果它仍然需要照顾,我会false
。
使用默认源代码通常是您在此处保持一致性的最佳选择。 https://android.googlesource.com/platform/frameworks/base/+/master/core/java/android/view/GestureDetector.java