更新时ListView滚动

时间:2015-05-14 09:15:55

标签: android listview chat

在聊天应用中,当新消息弹出时,listview有两种更新方式 另一个加载更多按钮是单击

所以我需要两种更新方式 第一个是滚动到新消息

其次是留在

点击的位置

列表视图具有这些属性

  <ListView

            android:layout_width="match_parent"
            android:layout_height="fill_parent"
            android:divider="@null"
            android:fadingEdge="none"
            android:fastScrollEnabled="false"
            android:footerDividersEnabled="false"
            android:headerDividersEnabled="false"
            android:listSelector="@android:color/transparent"
            android:smoothScrollbar="true"
            android:stackFromBottom="true"
            android:transcriptMode="normal" >
        </ListView>

第一个条件工作正常 所以我需要在点击LoadMore时保持位置

    public void updateWithOutScroll() {

    final int position = chListView.getSelectedItemPosition();
    Parcelable state = chListView.onSaveInstanceState();

    ChatAdapter.notifyDataSetChanged();

    chListView.onRestoreInstanceState(state);
    chListView.post(new Runnable() {
        @Override
        public void run() {

            chListView.setSelection(position);
        }
    });
}

这是使列表首先滚动到底部然后滚动到顶部

这有什么不对? 以及如何实现我的目标?

1 个答案:

答案 0 :(得分:0)

我不确定我理解你的问题。如果您正在询问如何向列表视图添加更多内容,请致电:

Adapter.add(...) or Adapter.addAll(...)

然后:

Adapter.notifyDataSetChanged();

然后,listview应该只将新元素添加到底部。