问题标签 [nestedrecyclerview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1086 浏览

android - 在嵌套的 RecyclerViews 中保持滚动位置

我有一个ViewHolder包含另一个RecyclerView. 这种类型的ViewHolder被重复使用多次。

由于ViewHolder是在不同项目之间共享的,所以 的滚动位置RecyclerView也是在项目之间共享的。例如,您滚动到第一项的末尾,第五项的 RecyclerView 也滚动到最后,因为视图被重用。

我试图通过映射 1ViewHolder到 1 项来解决这个问题。

我尝试itemId为该项目设置一个,调用RecyclerView.ViewHolder#setIsRecyclable(false)RecyclerView.getRecycledViewPool().setMaxRecycledViews() ,并按照此答案中的说明进行扩展/设置

在我向下滚动并向上滚动(ViewHolder被回收)后,内部 RecyclerView 的滚动位置被重置为第一项。

0 投票
1 回答
1124 浏览

android - 如何在垂直 RecyclerViews 中同步所有水平嵌套 RecyclerViews 的滚动?

背景

假设我有一个垂直的 RecyclerView,其中每一行都是一个水平的 RecyclerView。

我想做的是,无论您滚动哪个水平 RecyclerViews,所有其他 RecyclerViews 都会相应滚动,并且始终与完全相同的滚动 X 坐标同步

问题

我实际上对基本操作做得很好:

在此处输入图像描述

它的工作原理是拥有一个所有水平 RecyclerView 都具有的滚动侦听器,但是当一个开始滚动时,它是唯一拥有它的侦听器,同时它也会影响其他人一起滚动。

但是,我所做的有两个主要问题:

  1. 在一些(水平)滚动操作中(可能是一些手势,比如 fling),多个 RecyclerView 的滚动是不同步的,所以有些在 X 坐标中,与其他的不同。

  2. 垂直滚动时,我无法正确设置 X 坐标。不仅如此,当我期望调用垂直 RecyclerView 的 onBindViewHolder 时,它不会被调用(当我滚动很多时调用,而不仅仅是当我看到重新显示使用过的对象时调用)。

我试过的

这是当前代码:

MainActivity.java

activity_main.xml

Horizo​​ntal_recycler_view.xml

single_item.xml

问题

  1. 导致它无法滚动同步的代码有什么问题?

  2. 是否有可能我也没有获得我应该拥有的所有 RecyclerViews?

  3. 当我期望它时,垂直 RecyclerView 的 onBindViewHolder 怎么没有被调用?

  4. 如何在垂直的 onBindViewHolder 中将水平 RecyclerView 的 x 坐标滚动设置为其他滚动?

  5. 我不确定这是否是个问题,但如果每个水平 RecyclerView 中的每个项目的宽度可能与其他项目不同,我该怎么办?

0 投票
0 回答
366 浏览

android - 嵌套的recyclerview无限滚动不起作用

我有 recyclerview,其中包含水平子回收器视图,最后它有一个无限滚动垂直回收器视图子

我已将 wrap_content 高度添加到子垂直回收器视图,因此我无法将滚动侦听器添加到此子回收器视图

我已经向最外层的父 recyclerview 添加了无限滚动侦听器,但滚动只能工作到第 2 页,然后它不起作用我如何实现嵌套的无限滚动。以下是我在父 recyclerview 上应用的监听器代码

0 投票
2 回答
993 浏览

android - 如何在 cardview 中设计 gridview 类型的视图并在代码中实现它?

我已经制作了 recyclerView ,但我不知道如何设计 cardview 。因为它里面有 4 个自定义项目。

我怎样才能获得对卡片项目的访问权限?

图像

在我的卡片视图设计布局中,我在卡片视图内放置了一个网格视图,但我无法弄清楚如何使用 ArrayList 访问网格视图项目。

我的cardview设计布局

0 投票
2 回答
467 浏览

android - RecyclerView 项中的 RecyclerView

我知道这是一个坏主意,但我在另一个 RecyclerView 的项目中使用 RecyclerView 来显示包含列表的项目列表。

我设法让它工作并尽可能地对其进行调整,但是green当具有更多项目的列表开始显示并在屏幕上绘制时,我仍然会遇到这些尖峰。

GPU 分析三星 Galaxy S6

这些尖峰在翻阅物品时会产生明显的延迟,并且在使用比三星 Galaxy S6 更慢和更旧的东西时更加明显。

我做了一些日志记录,看来outerViewHolders 正在被回收,而innerRecyclerView 的适配器只创建了 5 次,所以它一定是绘图时间扼杀了性能。

我已经设法通过设置 RecycledViewPool 中的 ViewHolders 的最大数量来限制新innerRecyclerView 的 ViewHolders 的创建,但这只起到了一点作用。

我知道内部 RecyclerView 没有“底部”,它可以依靠它来计算何时显示新项目,因此它必须立即绘制每个项目,这可能是不应使用此设置的主要原因。(当我写下这个问题时,我才恍然大悟。谢谢世界上的橡皮鸭)。

有没有办法可以进一步调整,或者你能建议如何在另一个 RecyclerView 的项目中使用除 RecyclerView 之外的其他设置来完成这项工作吗?

如果需要,我会提供更多信息。

谢谢

0 投票
1 回答
987 浏览

android - 嵌套的 Vertical RecyclerView 的行为类似于一个 recyclerview

编辑我通过使用CoordinatorLayout和 aAppBarLayout作为标题的包装解决了这个问题,而TabLayout. 应该很明显,但是哦。

原始问题:我有一个设计,我尝试了多次迭代来完成我的应用程序。我知道嵌套可滚动视图不是更喜欢,但我相信是可行的,我真的找不到我正在寻找的具体问题的答案,所以就到这里。

这是设计的简单模型以及我如何想象如何实现它:

在此处输入图像描述

这是某种配置文件设计,顶部有一些文本视图、横幅、头像和jadajada。下面是三个选项卡,用于切换它们下面的内容。

每个选项卡的内容都是同一种对象,它们只是有自己的“过滤器”

下面的实现在开始时非常简单。

  • 我们使用recyclerview

  • 在里面我们有一些不同的viewholders,其中一个包含一个viewpager。

  • viewpager 包含其中包含另一个 recyclerview 的片段。

通过这种方式,我发现了很多问题。而且还没有真正完成,所以一切都感觉就像一个单一的滚动视图。

我也尝试过对所有内容都使用一个回收视图,但选项卡之间的动画并不是我们真正想要的,这也是一个真正的不一致混乱。

我认为我真正的问题是我是否将水放在头上,我应该以不同的方式解决这个问题吗?有没有其他人以优雅的方式做到这一点?

0 投票
0 回答
916 浏览

android - 嵌套Recyclerview(recyclerview 内recyclerview)如何优化?滚动,性能问题

我一直在努力解决这个 [nested recyclerview] 问题。

最大的问题是性能。

当我向下或向上滚动时,会出现烦人的滞后现象。

我发现了一些建议 [使用可扩展的 recyclerview,而不是使用嵌套的 recyclerview] 但是,我无法将其调整为 mycase。

我会附上我的结构和我的一些代码。

你能检查一下并给我一些好的建议吗?提前谢谢。

  • 1> 这是我的列表项结构。带有 CardView 项的 Recyclerview,每个 cardView 都有列表项。它的长度是可变的,所以我是通过recyclerview制作的。

回收商查看结构

  • 2> 这是我的代码。
  • ViewHolder 中的代码

    /li>

& * 适配器中的代码

谢谢 !!!

0 投票
1 回答
382 浏览

android - 回收站查看最后一项占用更多空间?

我使用带有无限滚动的回收器网格视图。我在回收器视图最后一项上遇到了新问题。在第一次加载最后一个列表最后一项时需要额外的空间。当滚动顶部并再次返回相同的位置时,它会自动分配正确的空间。我添加了我的问题快照并添加了我的 xml 文件。请查看并解释什么问题?

我的主要 xml 文件:

我的适配器类 xml:

我的问题图片:

在第一次加载时,

在此处输入图像描述

然后滚动并再次回到看起来很完美的地方, 在此处输入图像描述

我如何解决这个问题?

0 投票
0 回答
227 浏览

android - 使用回收器视图的复杂屏幕的Android设计考虑

以下将是我的应用程序中的布局

虚拟屏幕 所以我正在考虑使用回收站视图。将有一个父recyclerview,我将为每个部分定义不同的视图类型,例如viewpager、水平块等。根据视图类型,将创建不同的viewholders。水平块将显示在水平回收器视图中。对于网格,在另一个视图中会有一个回收器视图。每个部分的数据将从不同的 API 加载。意味着第一个 API 将只提供元数据,使用该元数据,将调用另一个 API,其数据将用于填充块中。

我的问题是,这是否是拥有父回收者视图、定义视图类型并在视图中拥有其他回收者视图的好方法。由于我将 recyclerview 嵌套在其他回收器中,因此这种方法应该可以提高性能,或者还有其他一些方法可以实现这种设计。

我正在使用回收站视图,因为它很容易实现分页。

PS:我没有使用线性布局,因为在线性布局上实现分页有点棘手。我发现在 listview/recycler 视图中更容易。此外,如图所示的列表/网格等部分是动态的,并且没有固定的数字,它们最多为 2 或 5。它可以最多为 n。因此,对于线性布局,我必须在循环中添加所有部分,如果没有,这将是矫枉过正。的部分相当大。

0 投票
1 回答
812 浏览

android - Vertical RecyclerView 对嵌套的 Horizo​​ntal RecyclerView 的滚动做出反应

在此处输入图像描述

在我的活动中,我有 ViewPager 由片段组成。我使用 CustomViewPager 禁用了 ViewPager 上的滑动动作。

我的片段布局有 Vertical RecyclerView,在这个 RecyclerView 里面有多个 Horizo​​ntal RecyclerViews。

为了确保我的 AppBarLayout 正确响应滚动行为,我在每个 Horizo​​ntal RecyclerView 上以编程方式将 nestedScrollingEnabled 设置为 false。

PS我正在使用recylerview 25.4.0版

问题如您在上面附加的 gif 中所见,要滚动水平 recyclerview,触摸应该是完全横向的,即使对于水平 recyclerview 上的轻微倾斜运动,垂直 recyclerview 也会拾取该事件并垂直向上和向下滚动页面。如何解决这个问题?

CustomViewPager.java

片段布局

recyclerview_productoverview(Vertical RecyclerView)里面的item布局

水平 RecyclerView:@id/recyclerview_item_section