我试图在第一个位置的回收者视图中插入一个项目,即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已添加到列表中,屏幕已显示之前为0-9的项目,现在显示项目1-10.
您需要以编程方式滚动到位置0,以便查看新添加的项目.
我用了
public void onAttachedToRecyclerView(RecyclerView recyclerView) { this.recyclerView = recyclerView; super.onAttachedToRecyclerView(recyclerView); }
获取对连接到适配器的recyclerView的引用(在我的情况下,我知道只有一个可能的recyclelerView,javadoc声明可能有多个)
在位置0添加项目后,我检查了第一个可见项目是否为0(如果用户已经向下滚动,我不想滚动)
private void restoreScrollPositionAfterAdAdded() { LinearLayoutManager layoutManager = (LinearLayoutManager) recyclerView.getLayoutManager(); if (layoutManager != null) { int firstVisibleItemPosition = layoutManager.findFirstVisibleItemPosition(); if (firstVisibleItemPosition == 0){ layoutManager.scrollToPosition(0); } } }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。