4

我在列表视图上有一个视图列表,我想单击它并触发 OnItemClickListener。虽然同时我希望能够滑动每个视图并进行自定义操作。这意味着当在 ArrayAdapter 中创建每个视图时,我必须为每个视图创建自己的 OnTouchEvent。

有没有办法让两者一起工作,以便我可以轻松进行自定义操作,例如滑动项目和单击项目

4

2 回答 2

3

这与 android 最近活动的处理方式非常相似 - 你知道,它们显示了所有最近打开的应用程序的列表,它们可以滑动删除,或单击打开。查看他们的代码,我想你会得到一个很好的主意:https ://github.com/android/platform_frameworks_base/tree/master/packages/SystemUI/src/com/android/systemui/recent

于 2013-03-28T15:03:15.447 回答
1

你的类可以同时实现 View.OnTouchListener、AdapterView.OnItemClickListener

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    if(motionEvent.getAction() == MotionEvent.ACTION_UP){
        Log.d(TAG, "ontouch: UP");

     **// Here you can figure if it was simple item click event.
        // We return false only when user touched once on the view. 
        // this will be handled by onItemClick listener.**

        if(lastAction == -1){
            lastAction = MotionEvent.ACTION_UP;
            view.clearFocus();
            return true;
        }
        return false;
    }
    else if(motionEvent.getAction() == MotionEvent.ACTION_DOWN){
        Log.d(TAG, "ontouch: DOWN");
        return false;
    }
    else {
        // This is all action events. 
        lastAction = -1;
        return true;
    }
}



@Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
     // We come here after onTouch event figured out that its a simple touch event and needs to be handled here.
    }
于 2017-06-21T07:12:41.163 回答