而此时的ListView项目在Android的滚动一页 [英] ListView Items in Android Scroll one at a Time

查看:122
本文介绍了而此时的ListView项目在Android的滚动一页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有没有什么办法,使我们滚动的ListView 项目只有一次。 就像当你刷了它只会滚动一个项目和不正常的滚动相似向下滚动只有一个项目下移。

请帮助!

下面是我的code:

 公共类ListViewTestExample延伸活动{

    ListView控件的ListView;

    私人GestureDetectorCompat mDetector;

    @覆盖
    保护无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        的setContentView(R.layout.activity_main_list_view_test);

        mDetector =新GestureDetectorCompat(这一点,新MyGestureListener());
        从XML //电网的ListView对象
        ListView的=(的ListView)findViewById(R.id.list);

        mDetector =新GestureDetectorCompat(这一点,新MyGestureListener());
        //定义的数组值在ListView中显示

        的String []值=新的String [] {Android的列表视图
         适配器实现,简单的列表视图在Android中,
         创建列表视图机器人,机器人为例,
         列表查看源文件code,列表视图数组适配器,
         Android的示例列表视图};

         ArrayAdapter<字符串>适配器=新的ArrayAdapter<字符串>(这一点,
         android.R.layout.simple_list_item_1,android.R.id.text1,价值观);

         listView.setAdapter(适配器);
    }

    @覆盖
    公共布尔onCreateOptionsMenu(功能菜单){
        //充气菜单;这增加了项目操作栏,如果它是present。
        。getMenuInflater()膨胀(R.menu.main,菜单);
        返回true;
    }

    公共布尔的onTouchEvent(MotionEvent事件){
        this.mDetector.onTouchEvent(事件);
        返回super.onTouchEvent(事件);
    }

    类MyGestureListener扩展GestureDetector.SimpleOnGestureListener {
        上下文的背景下= getApplicationContext();

        公共布尔onDown(MotionEvent事件){
                返回true;
        }

        公共无效onLong preSS(MotionEvent事件){
            Toast.makeText(背景下,龙preSS,Toast.LENGTH_SHORT).show();
        }

        公共布尔onFling(MotionEvent EVENT1,MotionEvent EVENT2,
                浮velocityX,浮动velocityY){

            浮sensitvity = 50;

            // TODO自动生成方法存根
            如果((event1.getX() -  event2.getX())> sensitvity){
                Toast.makeText(背景下,刷卡左,Toast.LENGTH_SHORT)
                    。显示();
            }否则,如果((event2.getX() -  event1.getX())> sensitvity){
                Toast.makeText(背景下,向右滑动,Toast.LENGTH_SHORT)
                    。显示();
            }
            如果((event1.getY() -  event2.getY())> sensitvity){
                如果(event2.get pressure()> event1.get pressure()){
                    Toast.makeText(背景下,刷卡向上+持有,
                            Toast.LENGTH_SHORT).show();
                } 其他 {
                    Toast.makeText(背景下,向上滑动,Toast.LENGTH_SHORT).show();
                }
            }否则,如果((event2.getY() -  event1.getY())> sensitvity){
                如果(event2.get pressure()> event1.get pressure()){
                    Toast.makeText(背景下,向下滑动+持有,
                        Toast.LENGTH_SHORT).show();
                } 其他 {
                    Toast.makeText(背景下,向下滑动,Toast.LENGTH_SHORT).show();
                }
            }
            返回true;
        }

        公共布尔onSingleTapConfirmed(MotionEvent事件){
            Toast.makeText(背景下,单点击确认,Toast.LENGTH_SHORT)
                。显示();
            返回true;
        }

        公共布尔onDoubleTap(MotionEvent事件){
            Toast.makeText(背景下,枪王确认,Toast.LENGTH_SHORT).show();
            返回true;
        }

    }

}
 

解决方案

您可以使用listView.setScrollY(int值)的onTouchListener(),您可以拦截该触摸事件和衡量项目视图的高度,然后setScrollY(列表视图的当前高度+项的高度)。

Is there any way in which we scroll ListView items only one at a time. Like when you swipe up it'll only scroll One item up and not normal scroll similar for scroll down only one item shifts down.

Please Help!

Here is My Code :

public class ListViewTestExample extends Activity {

    ListView listView;

    private GestureDetectorCompat mDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_list_view_test);

        mDetector = new GestureDetectorCompat(this, new MyGestureListener());
        // Grid ListView object from XML
        listView = (ListView) findViewById(R.id.list);

        mDetector = new GestureDetectorCompat(this, new MyGestureListener());
        // Defined Array values to show in ListView

        String[] values = new String[] { "Android List View",
         "Adapter implementation", "Simple List View In Android",
         "Create List View Android", "Android Example",
         "List View Source Code", "List View Array Adapter",
         "Android Example List View" };

         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
         android.R.layout.simple_list_item_1, android.R.id.text1, values);

         listView.setAdapter(adapter);       
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public boolean onTouchEvent(MotionEvent event) {
        this.mDetector.onTouchEvent(event);
        return super.onTouchEvent(event);
    }

    class MyGestureListener extends GestureDetector.SimpleOnGestureListener {
        Context context = getApplicationContext();

        public boolean onDown(MotionEvent event) {
                return true;
        }

        public void onLongPress(MotionEvent event) {
            Toast.makeText(context, "Long Press", Toast.LENGTH_SHORT).show();
        }

        public boolean onFling(MotionEvent event1, MotionEvent event2,
                float velocityX, float velocityY) {

            float sensitvity = 50;

            // TODO Auto-generated method stub
            if ((event1.getX() - event2.getX()) > sensitvity) {
                Toast.makeText(context, "Swipe Left", Toast.LENGTH_SHORT)
                    .show();
            } else if ((event2.getX() - event1.getX()) > sensitvity) {
                Toast.makeText(context, "Swipe Right", Toast.LENGTH_SHORT)
                    .show();
            }
            if ((event1.getY() - event2.getY()) > sensitvity) {
                if (event2.getPressure() > event1.getPressure()) {
                    Toast.makeText(context, "Swipe Up + Hold",
                            Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(context, "Swipe Up", Toast.LENGTH_SHORT).show();
                }
            } else if ((event2.getY() - event1.getY()) > sensitvity) {
                if (event2.getPressure() > event1.getPressure()) {
                    Toast.makeText(context, "Swipe Down + Hold",
                        Toast.LENGTH_SHORT).show();
                } else {
                    Toast.makeText(context, "Swipe Down", Toast.LENGTH_SHORT).show();
                }
            }
            return true;
        }

        public boolean onSingleTapConfirmed(MotionEvent event) {
            Toast.makeText(context, "Single Tap Confirmed", Toast.LENGTH_SHORT)
                .show();
            return true;
        }

        public boolean onDoubleTap(MotionEvent event) {
            Toast.makeText(context, "Double Tap Confirmed", Toast.LENGTH_SHORT).show();
            return true;
        }

    }

}

解决方案

You can use listView.setScrollY(int value) in onTouchListener().You may intercept the touch event and measure the height of your item view,then setScrollY(current height of listview + the height of item).

这篇关于而此时的ListView项目在Android的滚动一页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆