列表项双击

时间:2016-05-24 14:24:33

标签: android listview

我的应用程序中有listview,当点击任何listitem导航到摘要屏幕时。 在这里,当我双击其开放的两个摘要屏幕。如何处理双击?

任何人都有任何想法,建议我。

2 个答案:

答案 0 :(得分:1)

尝试类似这样的事情

    YourView.setOnTouchListener(new View.OnTouchListener() {
        private GestureDetector gestureDetector = new GestureDetector(Youractivity.this, new GestureDetector.SimpleOnGestureListener() {
            @Override
            public boolean onDoubleTap(MotionEvent e) {
                Log.d("TEST", "onDoubleTap");
                return super.onDoubleTap(e);
            }
        });

        @Override
        public boolean onTouch(View v, MotionEvent event) {
            Log.d("TEST", "Raw event: " + event.getAction() + ", (" + event.getRawX() + ", " + event.getRawY() + ")");
            gestureDetector.onTouchEvent(event);
            return true;
        }
    });

答案 1 :(得分:0)

为此,您可以使用Handler课程。

创建int类型的新变量,称为counter,并将其设置为0
然后找到您的列表视图并在其上调用方法setOnItemClickListener(listener)。 在这里,您需要检查counter0还是1
如果它01增加Handler并添加postDelayed 1个帖子来重置计数器(将其设置为零)。如果是int counter = 0; //our counter to check if the item has been tapped already Handler h = new Handler(); //import from android.os ListView lv = (ListView) findViewById(R.id.listview); lv.setAdapter(adapter); //set your adapter here lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapter, View v, int position, long arg3) { switch(counter) { case 0: //first tap counter++; //increase the counter h.postDelayed(new Runnable() { @Override public void run() { counter = 0; } }, 2000); //set the counter to 0 after 2 seconds (2000 milliseconds) break; case 1: //second tap counter = 0; //reset the counter //Do your stuff here break; } } }); ,请重置计数器并执行操作。

修改

我刚刚发现this回答说,如果使用UI指南中描述的长按操作会更好。它也是用户期望的。

所以也许使用长按而不是双击?

但是这里有一些示例代码:

OnItemClickListener

这里有一些参考文献: