【问题标题】:ListView Scrolling when UpdateListView 更新时滚动
【发布时间】:2015-05-14 17:34:49
【问题描述】:

在聊天应用程序中,当弹出新消息时,列表视图有两种更新方式 另一个加载更多按钮被点击了

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

二是停留在被点击的位置

列表视图有这些属性

  <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);
        }
    });
}

这是让列表先滚动到底部然后再滚动到顶部

这有什么问题? 以及如何实现我的目标?

【问题讨论】:

    标签: android listview chat


    【解决方案1】:

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

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

    然后:

    Adapter.notifyDataSetChanged();
    

    然后列表视图应该只是将新元素添加到底部。

    【讨论】:

    • 我的问题是关于更新列表视图时如何保存列表视图状态
    • “保存列表视图状态”具体是什么意思?这是您当前在列表视图中的位置吗?编辑:为什么你会失去列表视图状态?
    • 当更新调用 loadMore 的列表视图时,它会滚动到最后,因为 android:stackFromBottom="true" 但在这种状态下我不需要那个
    猜你喜欢
    • 2019-06-27
    • 2012-08-06
    • 2021-11-06
    • 1970-01-01
    • 2018-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-24
    相关资源
    最近更新 更多