2011-02-18 45 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等。