2011-02-18 64 views
2

我在我的viewFlipper內我的litView有一些麻煩。ListView裏面的ViewFlipper - 滾動問題

// GestureDetector 
class MyGestureDetector extends SimpleOnGestureListener { 
    @Override 
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) { 
     try { 
      if (Math.abs(e1.getY() - e2.getY()) > SWIPE_MAX_OFF_PATH) 
       return false; 
      // Right to left swipe 
      if(e1.getX() - e2.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       IconManager.INSTANCE.leftSwipe(); 
       vf.setInAnimation(slideLeftIn); 
       vf.setOutAnimation(slideLeftOut); 
       vf.showNext(); 
       System.out.println("SWIIINGG!!"); 
       // Left to right swipe 
      } else if (e2.getX() - e1.getX() > SWIPE_MIN_DISTANCE && Math.abs(velocityX) > SWIPE_THRESHOLD_VELOCITY) { 
       IconManager.INSTANCE.rightSwipe(); 
       vf.setInAnimation(slideRightIn); 
       vf.setOutAnimation(slideRightOut); 
       vf.showPrevious(); 
      } 
     } catch (Exception e) { 
      // nothing 
     } 
     return false; 
    } 
    @Override 
    public boolean onSingleTapConfirmed(MotionEvent e) { 
     Log.e("Item Click","Item Click"); 

     Intent intentAgenda = new Intent (Activity_Main.this, AgendaSelected.class); 
     //intentAgenda.putExtra("LECTURE_NAME", homeAgendaListAdapter.getItemId(3)); 
     startActivity(intentAgenda); 
     return super.onSingleTapConfirmed(e); 
    } 
} 

此代碼使我能夠在翻轉器中的視圖之間翻轉並在不同翻轉的列表中滾動。但是,這使得我的整個應用程序可點擊。即使我在空白的表面上註冊了一個點擊,並將我發送到Intent intentAgenda = new Intent想要發送給我的地方。只有當我點擊listView中的一個項目時纔會發生這種情況!

我能做些什麼來讓特定列表上的監聽者只聽「列表」而不是整個應用?我相信問題在於public boolean onSingleTapConfirmed,但我看不到它。

回答

1

我還沒有嘗試過上述,但實際工作的一個解決方案是在列表中創建一個新的OnItemClickListener,然後setOnItemClickListener(您的項目單擊偵聽器)。 這將是你的情況不要使用單一的水龍頭,但只需要創建一個新的itemClick在聽衆喜歡這一點,但更時尚:

list.setOnItemClickListener(new OnItemClickListener() { 

     public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 
       long arg3) { 
      Intent intentAgenda = new Intent (Activity_Main.this, AgendaSelected.class); 
      //  //   intentAgenda.putExtra("LECTURE_NAME", homeAgendaListAdapter.getItemId(3)); 
      startActivity(intentAgenda); 
     } 
    }); 

如果你想創建多個列表,你可以創建一個新項目點擊監聽器,只是將每個列表指向它。

+0

謝謝你!沒有如此高效的編碼,但是它是什麼......它的工作原理! :D – dedmau5 2011-02-18 13:32:18

1

由於包含列表的ViewFlipper具有相同的gestureListener,所以在tapflipper中的所有內容都將觸發onSingleTapConfirmed()方法。嘗試在單獨的gesturelistner上註冊列表以及僅處理分支:)感覺像問題不在於此代碼塊中,而在於設置了gestureListners等。