比方说你在群里聊天的时候,一条条item刷刷的出现,然后你要查看前面的内容item,然后滚动了超出一屏的内容,也就是最后一条消息不在该屏幕中。还没有看完然后同学们又发出一条条消息,于是ListView跳到最后一条消息,这时候你仍然想知道前面的聊天内容,是不是有点郁闷,这就是ListView默认的滚动方式。
当然这是可以修改的:
编写代码使ListView受Onscrolllistener监听:
private boolean isTranscriptMode = true;
mListView.setOnScrollListener(this);
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
switch (scrollState) {
case OnScrollListener.SCROLL_STATE_IDLE:
Log.d(TAG, "idle");
if (view.getLastVisiblePosition() == (view.getCount() - 1)) {
if(isTranscriptMode == false)
{
mListView.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_ALWAYS_SCROLL);//滚动方式
Log.d(TAG, "set TRANSCRIPT_MODE_ALWAYS_SCROLL");
isTranscriptMode = true;
}
}else{
if(isTranscriptMode == true)
{
Log.d(TAG, "set TRANSCRIPT_MODE_DISABLED");
mListView.setTranscriptMode(AbsListView.TRANSCRIPT_MODE_DISABLED);//不滚动,数据item仍然增加
isTranscriptMode = false;
}
}
break;
case OnScrollListener.SCROLL_STATE_FLING:
Log.d(TAG, "filing");
break;
case OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:
Log.d(TAG, "touche");
break;
}
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
}