listView在Android中自动向上/向下滚动

时间:2014-03-04 17:18:22

标签: android listview

您好我想实现一个自动向上/向下滚动的列表视图。我用定时器的方法滚动。但它没有得到顺利的onclick事件。列表视图只有十个列表项。请帮助我如何实现这一目标。

3 个答案:

答案 0 :(得分:1)

Android实际上有一个小部件。它被称为ListViewAutoScrollHelper,它是support library的一部分。

一个简单的实现看起来像这样:

    final ListView list = (ListView) findViewById(android.R.id.list);
    final ListViewAutoScrollHelper scrollHelper = new ListViewAutoScrollHelper(list);
    scrollHelper.setEnabled(true);
    list.setOnTouchListener(scrollHelper);

要开始滚动,请在靠近顶部(向上滚动)或向下(向下滚动)屏幕边缘的位置触摸手指,并按住您想要保持滚动的时间。

答案 1 :(得分:0)

假设您知道列表数据何时发生更改,您可以通过将列表选择设置为最后一行来手动指示列表滚动到底部。类似的东西:

private void scrollMyListViewToBottom() {
    myListView.post(new Runnable() {
        @Override
        public void run() {
            // Select the last row so it will scroll into view...
            myListView.setSelection(myListAdapter.getCount() - 1);
        }
    });
}

private void scrollMyListViewToTop() {
    myListView.post(new Runnable() {
        @Override
        public void run() {
            // Select the last row so it will scroll into view...
            myListView.setSelection(0);
        }
    });
}

答案 2 :(得分:0)

而不是Timer使用Async任务,然后在AsyncTask的方法发布进度中滚动ListView项。

 private class MyTimer extends AsyncTask<Integer, Integer, Integer> {
 protected Integer doInBackground(Integer... int) 
 {
          while(true)
          {
             publishProgress(0);
             try
             {
               Thread.sleep(2000);
              }
            catch (Exception e)
           {

           }

         }          

     return 0;
 }

 protected void onProgressUpdate(Integer... progress) 
 {
   //Scroll Your ListView   
 }

}