gpt4 book ai didi

android - 在零索引处插入第一项时,notifyItemInserted() 不起作用

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:01:58 24 4
gpt4 key购买 nike

我正在尝试在回收站 View 中的第一个位置插入一个项目,即 0 索引,如下所示

 try {
commentList.add(new Comment(
Preferences.getProfileImageUrl(),
"",
Preferences.getUserName(DONApplication.getInstance()),
String.valueOf(Preferences.getUserId(DONApplication.getInstance())),
response.getString("comment_id"),
commentText
));
commentAdapter.notifyItemInserted(commentList.size() - 1);
} catch (Exception e) {
e.printStackTrace();
}

但它根本没有显示,但是当我关闭窗口并再次打开它时,它就可以看到了。我不知道为什么会这样。有人可以帮助我吗?

最佳答案

经过几个小时的努力——这就是我的发现。项目 0 已添加到列表中,屏幕已经显示之前为 0-9 的项目,现在显示为项目 1-10。

您需要以编程方式滚动到位置 0 才能看到新添加的项目。

我用过

public void onAttachedToRecyclerView(RecyclerView recyclerView) {
this.recyclerView = recyclerView;
super.onAttachedToRecyclerView(recyclerView);
}

获取对附加到适配器的 recyclerView 的引用(在我的例子中,我知道只有一个可能的 recyclerView,javadoc 指出可能有多个)

在位置 0 添加项目后,我检查第一个可见项目是否为 0(如果用户已经向下滚动,我不想滚动)

private void restoreScrollPositionAfterAdAdded() {
LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager();
if (layoutManager != null) {
int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition();

if (firstVisibleItemPosition == 0){
layoutManager.scrollToPosition(0);
}
}
}

关于android - 在零索引处插入第一项时,notifyItemInserted() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43114837/

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