小编BCS*_*BCS的帖子

为什么android:transcriptMode ="normal"无法正常工作?

我一直在做很多摆弄我一直遇到的问题.每次将一个项目添加到我的listview(适配器)时会发生什么?如果我在最后一个项目(它将在一定程度上执行),我希望它会自动滚动; 但是,如果一次添加3个或更多项,则不会自动滚动.

这是listview的XML:

    <ListView android:id="@android:id/list"
    android:layout_width="fill_parent" 
    android:layout_height="0dip"
    android:layout_weight="1"
    android:transcriptMode="normal"/>
Run Code Online (Sandbox Code Playgroud)

我尝试使用我在这里找到的代码片段解决方法.

我的代码如下:

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;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

这个问题是当一堆项目立刻进入时,getListView().getLastVisiblePosition()不会立即更新,导致setSelection()永远不会被调用,因此不会自动滚动.

有什么建议?

android android-layout

6
推荐指数
1
解决办法
4354
查看次数

标签 统计

android ×1

android-layout ×1