我正在继承ListView
:
如果我在列表视图的项目视图中定义OnClickListener
,则列表视图上的MotionEvent.ACTION_DOWN
不会再被触发
如果我删除了监听器,MotionEvent.ACTION_DOWN
会被触发没问题。
似乎ACTION_DOWN被子视图“偷走”。
我的问题是:
我怎样才能实现这两个目标?
以下是一些代码:
我正在覆盖onTouchEvent
上的ListView
:
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_MOVE:
...
break;
case MotionEvent.ACTION_DOWN:
...
break;
}
return super.onTouchEvent(ev);
}
我还在项目上定义了一个点击监听器
@Override public View getView(int position, View convertView, ViewGroup parent) {
View rowView = convertView;
if (rowView == null) {
...
rowView = inflater.inflate(R.layout.item_routesresults, null);
...
}
ViewHolder holder = (ViewHolder) rowView.getTag();
...
rowView.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
...
}
});
....
return rowView;
}
修改
我刚刚确认,如果我使用列表视图上的setOnItemClickListener
定义项目的点击,而不是直接在项目视图上定义setOnItemClickListener
,则会触发listview上的MotionEvent.ACTION_DOWN
:< / p>
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
...
}
});
有人可以解释为什么直接在视图上定义点击,阻止在列表视图上触发ACTION_DOWN吗?