0
我正在開發一個聊天應用程序,我試圖一次加載10條消息,當用戶向上滾動時,它會加載10條消息。因此,我使用stackFromBottom =真來加載從底部消息:滾動列表視圖加載(Android)
<ListView
android:id="@+id/messagesList"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:transcriptMode="normal"
android:stackFromBottom="true">
和我有一個滾動聽者知道當用戶到達山頂(firstVisibleItem == 0,即,第一消息),所以我可以加載更多信息:
messagesList.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView absListView, int i) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem ==0 && !loading && !startApp) {
loading = true;
skip += 10;
fetchMessages = new FetchMessages(); //load more items
fetchMessages.execute(true);
}
}
});
的問題是,當你向上滾動,並達到頂峯,10多個消息負載,但是ListView控件會自動滾動至底部。當新項目添加到Listview時,我想保持完全相同的位置,就像任何常規聊天應用程序一樣。
這是增加消息的方法:
@Override
protected void onPostExecute(String json) {
if(json!=null){
...
//After Parse JSON ...
chatMessageAdapter.list.add(0,chatMessage); //add the message to the top of the list
chatMessageAdapter.notifyDataSetChanged(); //listview scrolls to the bottom afterwards
}
loading = false;
startApp = false;
}
我試過很多的其他線程的建議,但他們沒有實際工作。我希望有人能在這裏幫忙。
非常感謝。