2016-05-24 108 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