我一直在处理一个问题。每当我的列表视图(适配器)添加一个项目时,如果我在最后一个项目处,我希望它自动滚动(到某种程度上确实会这样)。但是,如果同时添加3个或更多的项目,则不会自动滚动。
我尝试使用一个我在这里找到的片段进行解决。
这种情况下,如果一次出现大量项目,则getListView()。getLastVisiblePosition()不会立即更新,导致setSelection()永远不会被调用,因此无法自动滚动。
有什么建议吗?
以下是该列表视图的XML:
<ListView android:id="@android:id/list"
android:layout_width="fill_parent"
android:layout_height="0dip"
android:layout_weight="1"
android:transcriptMode="normal"/>
我尝试使用一个我在这里找到的片段进行解决。
我的代码如下:
public void addChat(final String text, final String username) {
this.runOnUiThread(new Runnable() {
public void run() {
globals.chatAdapter.add(DateFormat.format("hh:mmaa", Calendar.getInstance()).toString(), username, text);
globals.chatAdapter.notifyDataSetChanged();
int lastP = getListView().getLastVisiblePosition();
int count = globals.chatAdapter.getCount() - 1;
if (lastP == globals.chatAdapter.oldP || lastP == -1) {
getListView().setSelection(count);
}
globals.chatAdapter.oldP = count;
}
});
}
这种情况下,如果一次出现大量项目,则getListView()。getLastVisiblePosition()不会立即更新,导致setSelection()永远不会被调用,因此无法自动滚动。
有什么建议吗?