android – 查找RecyclerView中第一个可见项的顶部偏移量

android – 查找RecyclerView中第一个可见项的顶部偏移量,第1张

概述我有一个RecyclerView LinearLayoutManger,它使用一个保存聊天消息的适配器.我将聊天消息的数量限制在最近的100个.这个问题是,当我删除旧聊天时,recyclerview中聊天的滚动位置会发生变化,因为删除了索引0.我开始编写下面的代码: int firstVisiblePosition = layoutManager.findFirstVisibleItemPosit 我有一个RecyclerVIEw linearLayoutmanger,它使用一个保存聊天消息的适配器.我将聊天消息的数量限制在最近的100个.这个问题是,当我删除旧聊天时,recyclervIEw中聊天的滚动位置会发生变化,因为删除了索引0.我开始编写下面的代码:
int firstVisibleposition = layoutManager.findFirstVisibleItemposition();VIEw v = layoutManager.getChildAt(firstVisibleposition);if (firstVisibleposition > 0 && v != null) {    int offsettop = //need to get the vIEw offset here;    chatAdapter.notifyDataSetChanged();    if (firstVisibleposition - 1 >= 0 && chatAdapter.getItemCount() > 0) {        layoutManager.scrollTopositionWithOffset(firstVisibleposition - 1,offsettop);    }}

我认为很容易获得第一个可见项目位置的可见偏移量.防爆.如果第一个可见视图是300dp但只有最后200dp可见,我想获得100偏移量.

这样我就可以使用scrollTopositionWithOffset(firstVisibleposition – 1,offsettop).

我在这里错过了什么吗?这似乎是一个容易解决的问题,但我还没有看到任何方法可以支持这一点.

解决方法 @黑带.感谢您让我走上正轨.

我需要的偏移实际上只是v.gettop();

我真正的问题在于getChildAt().显然getChildAt从第一个可见位置开始,而不是在适配器的位置.在这种情况下,文档编写得很糟糕.

这是生成的代码.

int firstVisibleposition = layoutManager.findFirstVisibleItemposition();VIEw v = layoutManager.getChildAt(0);if (firstVisibleposition > 0 && v != null) {    int offsettop = v.gettop();    chatAdapter.notifyDataSetChanged();    if (firstVisibleposition - 1 >= 0 && chatAdapter.getItemCount() > 0) {         layoutManager.scrollTopositionWithOffset(firstVisibleposition - 1,offsettop);    }}
总结

以上是内存溢出为你收集整理的android – 查找RecyclerView中第一个可见项的顶部偏移量全部内容,希望文章能够帮你解决android – 查找RecyclerView中第一个可见项的顶部偏移量所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1136429.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-30
下一篇 2022-05-30

发表评论

登录后才能评论

评论列表(0条)

保存