android– 在调用notifydatasetchanged后,Recyclerview滚动到顶部

android– 在调用notifydatasetchanged后,Recyclerview滚动到顶部,第1张

概述我有一个水平的recyclerview(使用LinearLayoutManager),它的子项目有一个包含在relativelayout中的imageview.recyclerview有三个包含子项的水平行.当滚动recyclelerview时,我正在使用http调用的响应更新数据集,并在http响应回调中调用notifydatasetChanged.如果recyclerview子项

我有一个水平的recyclervIEw(使用linearlayoutmanager),它的子项目有一个包含在relativelayout中的imagevIEw. recyclervIEw有三个包含子项的水平行.当滚动recyclelervIEw时,我正在使用http调用的响应更新数据集,并在http响应回调中调用notifydatasetChanged.如果recyclervIEw子项的高度和宽度是固定值(例如150dp,84dp),则recyclervIEw的行为与预期相同,即加载新项并保持在相同的滚动位置,但如果我将recyclervIEw的子项的高度和宽度设置为match_parent, wrap_content,recyclervIEw完全刷新并滚动到第一个位置.为什么会这样?
注意:我在SO上检查了其他类似的问题,但没有一个提供可行的解决方案.

main_layout
    
    

<androID.support.v7.Widget.RecyclerVIEw    androID:ID="@+ID/grID_recycler_vIEw"    androID:layout_wIDth="match_parent"    androID:layout_height="match_parent"    androID:layout_marginBottom="110dp"    androID:layout_marginleft="15dp"    androID:layout_margintop="80dp"    androID:background="@color/transparent"    androID:outlineProvIDer="bounds"    androID:elevation="8dp"    androID:padding="0dp"    androID:scrollbars="none" />....

recycler_vIEw_child_item
    
    

<relativeLayout      xmlns:androID="http://schemas.androID.com/apk/res/androID"androID:layout_wIDth="match_parent"androID:layout_height="match_parent"androID:orIEntation="vertical"androID:padding="0dp"><ImageVIEw    androID:ID="@+ID/thumbnail"    androID:layout_wIDth="wrap_content"    androID:layout_height="match_parent"    androID:adjustVIEwBounds="true"    androID:maxWIDth="126dp"    androID:maxHeight="225dp"    androID:padding="0dp"/></relativeLayout>

解决方法:

我遇到了同样的问题,无法在SO上找到解决方案.问题是由于没有为RecyclerVIEw设置LayoutManager引起的.我知道你说你有一个linearlayoutmanager.但请确保按以下方式设置它. (在我的例子中,我使用的是Horizo​​ntalGrIDVIEw,但同样的原则适用于RecyclerVIEw).

horizontalGrIDVIEw = (HorizontalGrIDVIEw) findVIEwByID(R.ID.grIDVIEw);GrIDElementAdapter adapter = newGrIDElementAdapter(VenueProfileActivity.this, mDeals);horizontalGrIDVIEw.setAdapter(adapter);HorizontalGrIDVIEw.LayoutManager layoutManager = new linearlayoutmanager(VenueProfileActivity.this, linearlayoutmanager.HORIZONTAL, false);horizontalGrIDVIEw.setLayoutManager(layoutManager);horizontalGrIDVIEw.setHasFixedSize(true);
总结

以上是内存溢出为你收集整理的android – 在调用notifydatasetchanged后,Recyclerview滚动到顶部全部内容,希望文章能够帮你解决android – 在调用notifydatasetchanged后,Recyclerview滚动到顶部所遇到的程序开发问题。

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

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

原文地址:https://54852.com/web/1108098.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存