Android:如何在父级上检测ACTION_DOWN并点击子级?

时间:2014-04-03 23:55:31

标签: android listview onclicklistener ontouchevent

我正在继承ListView

  • 如果我在列表视图的项目视图中定义OnClickListener,则列表视图上的MotionEvent.ACTION_DOWN不会再被触发

  • 如果我删除了监听器,MotionEvent.ACTION_DOWN会被触发没问题。

似乎ACTION_DOWN被子视图“偷走”。

我的问题是:

我怎样才能实现这两个目标?

  • 检测listview上的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吗?

0 个答案:

没有答案