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;
}
我试过很多的其他线程的建议,但他们没有实际工作。我希望有人能在这里帮忙。
非常感谢。