2016-05-24 64 views
-1

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

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

+0

请至少分享您的代码! – bendaf

回答

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; 
     } 
    }); 
0

要做到这一点,你可以使用Handler类。

创建一个类型为int的新变量,称为counter,并将其设置为0
然后找到你的listview并调用方法setOnItemClickListener(listener)就可以了。 在这里您需要检查counter0还是1
如果是0将其增加1并添加一个HandlerpostDelayed线程来重置计数器(将其设置为零)。如果它是1,请重置计数器并执行您的操作。


编辑

我只是发现this回答说这是最好使用长按操作如何在UI准则描述。这也是用户期望的。

那么也许使用长按而不是双击?


但这里是一些示例代码:

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; 
     } 
    } 
}); 

这里提供一些参考:

+0

在android中有现成的手势检测器,不需要重新发明轮子。 – njzk2