2015-10-13 49 views
0

我正在爲我的listView(自定義PinnedSectionListView)偵聽onTouch事件,但似乎只有在上下滾動時才註冊MotionEvents。我主要需要它來響應水龍頭。如果我點擊細胞,它什麼都不做。Fragment中的onTouch事件只註冊滾動

在我OnCreateView在我的片段,我有以下代碼:

mDetector = new GestureDetectorCompat(mContext, new GestureDetector.SimpleOnGestureListener() { 
      @Override 
      public boolean onDoubleTap(MotionEvent event) { 
       int position = mListView.pointToPosition((int) event.getX(), (int) event.getY()); 
       if (mAdapter.getItem(position) != null) { 
        onClickListItem(mAdapter.getItem(position)); 
       } 
       return true; 
      } 
     }); 

     mListView.setOnTouchListener(new ListView.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       if (event.getAction() == MotionEvent.ACTION_UP) { 
        Log.d(TAG, "ACTION_UP"); 
        return mDetector.onTouchEvent(event); 
       } 
       if (event.getAction() == MotionEvent.ACTION_DOWN) { 
        Log.d(TAG, "ACTION_DOWN"); 
        return mDetector.onTouchEvent(event); 
       } else { 
        Log.d(TAG, "Action " + event.getAction()); 
        return false; 
       } 
      } 
     }); 

回答

0

要獲得產品Click事件,你需要使用onListItemClick,把作爲AdapterView.OnItemClickListener接口的一部分來實現。所以你的覆蓋將是...

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 
    // Do something when a list item is clicked 
} 
+0

這種方法似乎並沒有產生一個運動事件。你會如何檢測單元格上的雙擊? – Alan

+0

此方法用於檢測ListView項目上的輕敲,這是您要求提供的問題。 – NoChinDeluxe

+0

如果您想要檢測列表項上的雙擊,我認爲您只能獲取雙擊的x和y座標,然後您必須手動將其與列表項的座標進行匹配。按照Google UI指南的建議,使用長按來代替雙擊是非常簡單的。 – NoChinDeluxe