viewFlipper里面的listView - 滚动问题

时间:2011-02-18 11:08:54

标签: android listview android-intent scroll viewflipper

我在我的litViewviewFlipper遇到了一些问题。

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

这段代码使我可以翻转翻板中的视图,并在不同翻转中的列表中滚动。但是,这使我的整个应用可以点击。即使我singleTap在空白表面上,它也会记录一次点击,并将我发送到Intent intentAgenda = new Intent想要发送给我的位置。只有当我点击listView中的项目时才会发生这种情况!

我可以做些什么才能让特定列表上的监听器只听“列表”而不是整个应用程序?我认为问题出在public boolean onSingleTapConfirmed内,但我看不到它。

2 个答案:

答案 0 :(得分:1)

由于包含列表的ViewFlipper具有相同的gestureListener,因此轻触的viewflipper中的所有内容都将触发onSingleTapConfirmed()方法。尝试在单独的gesturelistner上注册列表以及仅处理水龙头:)感觉像问题不在此代码块中,而是设置了gestureListners等。

答案 1 :(得分:1)

我没有尝试过上述内容,但实际上有一个解决方案是在列表上创建一个新的OnItemClickListener,然后创建setOnItemClickListener(您的项目单击侦听器)。 那就是在你的情况下不使用单击,但只是创建一个新的on 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);
        }
    });

如果要创建更多列表,可以创建一个新项目单击侦听器,并将每个列表指向它。