listview 利用handler自动滚动到底部在从头开始循环滚动

来源:互联网 发布:2016云计算市场大盘点 编辑:程序博客网 时间:2024/05/21 01:54

listview基本的获取数据:

在获取数据后:

添加:listview 的滑动监听

realTimeListView.setOnScrollListener(new AbsListView.OnScrollListener() {            @Override            public void onScrollStateChanged(AbsListView view, int scrollState) {            }            @Override            public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {                if ((firstVisibleItem+visibleItemCount) == totalItemCount){//判断滑动到底部了,但没有下面的的代码,发现一个问题,就是看不到最后一条数据就开始重新调了                    View lastVisibleItemView = realTimeListView.getChildAt(realTimeListView.getChildCount()-1);                    if (lastVisibleItemView != null && lastVisibleItemView.getBottom() == realTimeListView.getHeight()){                        realTimeListView.smoothScrollToPosition(0);//这句话就是调到指定的位置。                    }                }            }        });
 /**     * 向上滚动     */    public void listScrollUp() {        listScrollOff();        handler.postDelayed(run_scroll_up, 0);    }    /**     * 停止滚动     */    public void listScrollOff() {        handler.removeCallbacks(run_scroll_up);    }    Handler handler1 = new Handler(){        @Override        public void handleMessage(Message msg) {            handler1.removeCallbacks(run_scroll_up);        }    };    Runnable run_scroll_up = new Runnable() {        @Override        public void run() {            realTimeListView.smoothScrollBy(50,10);//50是滑动的距离            handler1.postDelayed(run_scroll_up,1000);        }    };
调用向上的滚动:

下面是向下滚动

 /**     * 向下滚动     */    public void listScrollDown() {        listScrollOff();        handler.postDelayed(run_scroll_down, 0);    }
 Runnable run_scroll_down = new Runnable() {        @Override        public void run() {            lvMusics.smoothScrollBy(-1, 10);//-1是滑动的距离            handler.postDelayed(run_scroll_down, 10);        }    };