1. 程式人生 > >有時候開發listView需要預設顯示到最後一條資料

有時候開發listView需要預設顯示到最後一條資料

想要實現一個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);
        }
    });
}