設置ListView顯示到最后一行


  上次聊天的那個界面上用的一個TextView,然后每次消息都用text.append("消息內容"+"\n")函數來在text字符串后邊接一段,然后重新顯示這個內容。

  現在需要美化界面,將消息內容放到一個ListView里邊,每個消息是一個Item,然后進行顯示,效果圖如圖所示:

  那么問題來了,我每次有新的消息的時候,都會排列在上一個Item的下方,即使到了最底下,最新的消息也會沉到最下邊,顯示不出來,需要手動滑動屏幕來顯示最新消息,顯然是不符合實際要求的。於是想了一個辦法,讓他每次都顯示ListView的最后一個Item,我是看的別人的CSDN博客(這里附上Ta的博客鏈接http://blog.csdn.net/snow12342234/article/details/49794507),這里直接照搬過來,然后供自己以后學習參考:

  

  其實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);
        }
    });
}

  好了,這三種方法我沒有全部嘗試,只是用了第二種,直接設置ListView,然后看效果就變成了這樣:

  程序還在完善中,回頭還會再來補充......

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM