问题标签 [android-concatadapter]

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 回答
1043 浏览

android - ConcatAdapter how to change scroll position of inner RecyclerView that is located in an Adapter from another Adapter?

enter image description here

In the image section with Favorites and the horizontal RecyclerView is one adapter, adapterFavoriteProperties, while the row with chart is another adapter, adapterChart, of the main RecyclerView. Main RecyclerView is composed of rows that coming each from different adapter that is glued with Concat Adapter.

Also adapter for chart has a lambda available in the fragment

The section that contains title, see All and recyclerView is

And it's adapter

and ViewHolder

This where i should have either reference of RecyclerView or have ViewHolder to call it's recyclerView's smoothScrollToPosition(position)

0 投票
2 回答
1592 浏览

android - ConcatAdapter 导致 getItemViewType() 返回错误值?

我有一个 RecyclerView 适配器,它负责处理我多年来一直使用的几种视图类型。最近,我发现了ConcatAdapter,但我似乎遇到了一个问题,它似乎返回了错误的值getItemViewType()

我有一个用例,我想在其中显示标题并在其下方显示项目列表。我已经为标题创建了一个新的适配器类,但列表项将继续使用我的旧适配器(它还负责其他几种视图类型)。

所以我连接了两个适配器:

这工作正常,但是当我打开活动时,它立即崩溃并给出错误:

java.lang.ClassCastException:com.myapp.android.adapter.PostAdapter$PostViewHolder 无法转换为 com.myapp.android.adapter.PostAdapter$FooterViewHolder

这没有任何意义,因为我什至从未在回收站视图中添加页脚。

我的getItemViewType()方法PostAdapter看起来像这样:

onBindViewHolder()看起来像这样:

但无论出于何种原因,当我运行调试器时,它会上线FooterViewHolder vh1 = (FooterViewHolder) holder;,即使我从未将页脚作为PostAdapters 数据的一部分。

那么它为什么会落在这上面呢?为什么 ConcatAdapter 会在处理多种视图类型的适配器中导致这种奇怪的行为?

0 投票
0 回答
618 浏览

android - 如何在同一个 ConcatAdapter 中使用具有多种视图类型的不同适配器?

我有一个ConcatAdapter使用一个(通过调用和一个 normalPagingDataAdapter由它自己包装):ConcatAdapterwithLoadStateFooterListAdapter

thenewChatMessageAdapter和 thechatMessageHistoryAdapter都具有多种视图类型,但两个适配器具有完全相同的视图类型:

itemViewType当我启动我的应用程序时,所有视图都是空的,因为onBindViewHolder. 如果我删除withLoadStateFooter(将第二个 ConcatAdapter 变成我自己的PagingDataAdapter)并添加它,它可能会起作用ConcatAdapter.Config.Builder().setIsolateViewTypes(false).build(),可能是因为两个适配器具有完全相同的viewTypes. 但是,一旦我添加withLoadStateFooter它也停止工作,我又回到了空视图持有者。

所以简而言之,我的问题是:如何viewTypes在我的适配器中使用不同的组合在 a 中ConcatAdapter

0 投票
2 回答
411 浏览

android - 在 RecyclerView 适配器中设置 LayoutManager 类型

我正在使用 aConcatAdapter为我的RecyclerView. 我正在使用两个RecyclerAdapters,一个不需要LayoutManager,一个需要一个GridLayoutManager。如何正确设置类LayoutManagerRecyclerAdapter?我试过这样做,它不会抛出任何错误,但数据不显示。

没有语法错误,但我不确定我做错了什么。(当我在没有 的情况下对其进行测试时,Grid Recycler 工作正常ConcatAdapter)。

在此处输入图像描述

这是我关注的 Medium 帖子中的 Kotlin 语法,所以我不确定等效的 Java 语法是什么。

https://medium.com/@gsaillen95/how-to-inflate-different-layoutmanagers-for-each-adapter-with-concataadapter-76cdee6266ca

0 投票
2 回答
1093 浏览

android - ConcatAdapter 中的多个 LayoutManager

我想像这样实现一个 ConcatAdapter :

在此处输入图像描述

此页面的 recyclerView 包含以下元素:

  • 标题
  • 水平recyclerView(带分页)
  • 标题
  • 垂直recyclerView(无分页)
  • 标题
  • 水平recyclerView(带分页)

但问题是我只能将一个 LayoutManager 设置为我所知道的包含 ConcatAdapter 的 recyclerView。

如何为每个适配器设置不同的布局管理器?或者任何其他使用 CocantAdapter 实现此页面的解决方案?

(为什么是 ConcatAdapter?因为它解决了 nestedRecyclerView 的性能问题,即使我知道 recyclerViewPool 也是如此)

0 投票
0 回答
415 浏览

android - ConcatAdapter 内部的 Paging3 Library 的 PagingDataAdapter 加载所有页面而不滚动

我有 PagingDataAdapter,它包含在 ConcatAdapter 内的 GridAdapter 中。当我收集这样的数据时:

分页库开始按顺序加载所有页面,无需任何滚动。

postsAdapter 是一个带有 GridLayoutManager 的适配器,它是 PagingDataAdapter 的一个包装

viewModel 中的 setPostState 函数:

GridAdapter 中的 notifyItems 函数:

我怀疑 concat 适配器为我的 GridAdapter 提供了无限的高度,它开始加载所有内容,就好像我将 recyclerView 放在 nestedScrollView 中一样

0 投票
1 回答
212 浏览

android - 在 ConcatAdapter Android 中设置不同适配器之间的边距/填充

是否可以在ConcatAdapter的不同适配器之间设置空格(边距/填充)?我只有一个简单的代码示例,如下所示,但根据设计,我必须在不同适配器之间准确添加边距(不是一个适配器中的支架项目)。实现这一目标的最佳方法是什么?

连接适配器

0 投票
0 回答
531 浏览

android - 恢复 ConcatAdapter 中嵌套 recyclerview 的滚动状态

我正在使用新的ConcatAdapter和 Android 导航组件来创建一个复杂的 recyclerView,其中包含嵌套的水平滚动列表。我正在尝试恢复这些嵌套列表在旋转、导航等方面的状态。我已经阅读了关于该主题的这篇文章,但我正在努力解决如何在这种情况下恢复状态。

adapter.stateRestorationPolicy = PREVENT_WHEN_EMPTY我将它应用于包含嵌套回收器视图的适配器时,上面的文章中的内容不起作用。我在收到数据时尝试更新嵌套适配器,并尝试在数据接收时将它们添加到 concat 适配器,但没有成功。

我的片段

也试过这个:

我还尝试延迟将适配器绑定到外部 recyclerview:

我的嵌套 Recyclerview 适配器

任何帮助表示赞赏。

0 投票
0 回答
87 浏览

android-recyclerview - 如何在 Recylerview 的连接适配器之间添加分隔符/空格

如何在 Recylerview 的连接适配器之间添加分隔符/空格

我们可以使用 Android 中的多个适配器创建 ConcatAdapter

我想使用创建一个水平recyclerview

但是我想在 2 个适配器之间有一个分隔器或空间,如下图所示

在此处输入图像描述

DividerItemDecoration没用。

我们应该怎么做。

0 投票
1 回答
126 浏览

android - 是否可以将多个 Recyclerview 拼接到一个 Recyclerview 中?

我的布局有 3 个 Recyclerview。第一个和第二个是Vertical,第三个是Horizontal。因为我需要显示3个Recyclerview,所以我必须使用NestedScrollView它们来包装它们。NestedScrollView + Recyclerview是一件坏事,即使没有多少数据。喜欢: 在此处输入图像描述

我想做的是将3个Recyclerviews合并为一个Recyclerview.Like: 在此处输入图像描述

我尝试使用ConcatAdapter,但它似乎并不满足我。因为:

这是使用NestedScrollView在此处输入图像描述

这是使用ConcatAdapter在此处输入图像描述

是的,ConcatAdapter 不符合我的要求,因为每个 Recyclerview 都有不同的外包装。

使用 ConcatAdapter 应该怎么做?