2014-03-04 67 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 
} 

}