2014-03-04 38 views
0

嗨,我想实现一个列表视图,自动向上/向下滚动。我用定时器的方法使用滚动。但它并没有得到顺利的onclick事件。列表视图只有十个列表项。请帮助我,我如何实现这一点。listView在Android中自动向上/向下滚动

+0

你的意思是滚动到底部;稍等一会儿再滚回去?或滚动到特定位置? –

+0

是自动开始以低速向底部滚动。一旦到达底部,开始向第一项滚动 – user2050075

回答

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

要开始滚动,触摸你的手指靠近顶部(向上滚动)或底部(向下滚动)屏幕的边缘,并保持按下状态你希望保持滚动的时间。

+0

我试过这个,但它没有成功尝试。我想让列表自动开始以慢速滚动到底部。一旦到达底部,开始向第一项滚动 – user2050075

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

而不是定时器使用异步任务,然后滚动您的ListView项目的方法发布AsyncTask的进展。

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 
} 

}