gpt4 book ai didi

android - RecyclerView GridLayoutManager 在顶部插入时向下滚动

转载 作者:行者123 更新时间:2023-11-30 01:55:03 27 4
gpt4 key购买 nike

我有一个用 RecyclerView 填满屏幕的 fragment ( android:support:v7.widget.RecyclerView ) 和一个 GridLayoutManager .支持库版本为 23.0.0

假设我每行有三个 项目。当我在顶部插入三个新项目时,我希望所有内容都向下移动一行。如果我在最上面,我希望所有内容都向下移动一行,并在第一行看到我的三个新项目。相反, View 停留在项目上。插入了新项目,但我必须向上滚动才能看到它们。除非我向上滚动,否则我什至不会意识到有些东西发生了变化。

我怎样才能根据插入项目的数量使所有内容向下移动(即它向上滚动或停留在同一索引上(移动))?

这是我插入新项目的方式:

myImageAdapter.notifyItemRangeInserted(0, batch.size());

初始化:

final RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 1);
grid = (RecyclerView) rootView.findViewById(R.id.grid);
grid.setHasFixedSize(true)
grid.setLayoutManager(layoutManager);
grid.setAdapter(myImageAdapter);

我的 myImageAdapterRecyclerView.Adapter<?> 的导数但没什么特别的。

我希望大家清楚我要实现的目标。如果没有请告诉我,我将创建一个图形来说明。

//从 GridLayoutManager 添加文档:“GridLayoutManager 不支持 stackFromEnd。” 看来我不能使用它。

最佳答案

您可以使用scrollToPosition() 属性;

if(yourCurrentPosition < 3)
layoutManager.scrollToPosition(0);
else
layoutManager.scrollToPosition(yourCurrentPosition - 3);

在您的 Activity/fragment 中,您可以使用数据集观察器:

myImageAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver() {
@Override
public void onItemRangeChanged(int positionStart, int itemCount) {
super.onItemRangeChanged(positionStart, itemCount);
if(positionStart < 3)
layoutManager.scrollToPosition(0);
else
layoutManager.scrollToPosition(positionStart - 3);
}
});

关于android - RecyclerView GridLayoutManager 在顶部插入时向下滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32379129/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com