有時候開發listView需要預設顯示到最後一條資料
阿新 • • 發佈:2019-01-26
想要實現一個listview初始化時和資料變化後顯示到列表的最末,簡單地說就是像聊天窗或者是日誌輸出那樣的情景。
開始沒去仔細看listview物件的屬性,按照慣性思維就去 呼叫 listView.scrollTo(offset_x,offset_y);
然後又被一篇奇怪的日誌誤導了什麼外層容器和 內層兩個view ...幹!浪費我時間。
其實listView元素直接在xml裡就可以簡單定義實現好這個效果,附帶實現的方法三個。
方法1:直接在layout裡對listView的屬性定義
StackFromBottom: true
Transcript Mode: alwayScroll
方法2: 把上面的方法改為java程式碼的方式宣告
listView.setTranscriptMode(ListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);
listView.setStackFromBottom(true);
方法3: 變通的做法 把焦點focus去listView的最後一個item,那自然就是顯示最底部
每次介面卡 adapter.notifyDataSetChanged()
之後要記得呼叫,略麻煩
注意要用 post的方法確保listview的資料已經載入完畢
private void scrollMyListViewToBottom() { listView.post(new Runnable() { @Override public void run() { // Select the last row so it will scroll into view... listView.setSelection(listAdapter.getCount() - 1); } }); }