问题标签 [android-recyclerview]

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 投票
4 回答
5556 浏览

android - 带有凌空图像请求的回收器视图(取消请求)

所以我使用回收器视图在网格中显示图像,并使用 volley 库从 url 下载图像作为位图。

问题是,当我在下载图像之前滚动并跳过一个或多个视图并且该视图被回收时,图像下载请求不会在那些中间视图上取消,导致该/那些图像在实际图像之前闪烁加载在该视图中。

所以我想使用标签取消那些中间图像请求,但无法弄清楚它是如何导致在其他并行视图中取消请求的!

此外,当我使用 volley NetworkImageView (它自己处理这种图像取消)时,会给出完美的结果。但我需要获取每个图像的位图以从中选择颜色,因此我无法使用 NetworkImageView。

问)如何取消使用 recyclerview 膨胀的特定图像视图上的所有待处理的凌空图像请求(除了应该加载且不影响其他并行视图的请求)?

0 投票
6 回答
26284 浏览

android - 使用 RecyclerView 时出错:指定的子节点已经有父节点

我正在尝试使用新的 RecyvlerView 适配器创建一个 listView。我遵循了 android 开发人员资源上的确切指南。但这给了我一个奇怪的错误:指定的孩子已经有了父母。您必须首先在孩子的父母上调用 removeView()。 我有最新的 SDK。我还在 gradle 中定义了依赖项。

我的活动(主要活动):

我的适配器:

my_text_view.xml(列表项的布局):

activity_my.xml(主要活动):

这是 logcat 输出:

0 投票
2 回答
5973 浏览

android - 在 Adapter.onBindViewHolder 中获取 CardView 的宽度

我有一个帖子列表,其中大多数是图片(简单地说它是帖子,就像 G+ 或 FB 应用程序一样)。每个帖子条目都有一个图像纵横比,因此即使在从服务器加载图像之前,我也可以根据它的宽度设置图像高度,因此卡片布局不会在加载时改变。

问题是layout_width="match_parent"针对卡片和帖子图像设置的。当我得到卡片视图的宽度时,它为零。所以我无法计算高度。

目前我看到的唯一解决方案是采用父容器(RecyclerView)的宽度并扣除所有填充,但这看起来不是一个好的解决方案。

还有其他方法吗?

这是适配器代码的示例

布局(没有不相关的部分)

包含的帖子:

0 投票
4 回答
11549 浏览

android - FrameLayout 中 RecyclerView 上方的膨胀视图

在单击按钮时,我试图EditTextRecyclerView. 但不是将 EditText 添加到布局的顶部,从而将 RecyclerView 向下推,而是简单地将其放置在 RecyclerView 的顶部,像这样覆盖它:

在此处输入图像描述

您可以看到“新文本”覆盖了 RecyclerView 的第一项。如何让它在 RecyclerView 上方膨胀,并将 RecyclerView 向下推,以容纳新添加的 EditText?

这是我将 EditText 添加到的 FrameLayout 的 XML:

这是我的 FloatingActionButton 的 onClick 方法,我希望在 RecyclerView 上方添加 EditText:

这是我添加的 EditText 的 XML:

0 投票
4 回答
199231 浏览

java - 在 Fragment 中显示 RecyclerView

我正在尝试RecyclerViewAndroid Lollipop 中的新功能,但我被卡住了。

我正在尝试接收一个列表,其中包含一个图标和图标TextView右侧的Fragment.

我发现了这个关于如何设置RecyclerView. 我遵循了每一点,只改变了item_layout.xml以满足我的需要。

该项目构建时没有任何错误,但是当它在我的设备上启动时出现此错误:

java.lang.RuntimeException:无法启动活动 ComponentInfo{com.fredrikaldgard.materialcolors/com.fredrikaldgard.materialcolors.MainActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'void android.support.v7.widget.RecyclerView。空对象引用上的 setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)'

我试图用谷歌搜索这个问题,但我对 Android 开发非常陌生。

这是我的MainActivity

我的MyAdapter

编辑:这里是Fragment

可能出了什么问题?

0 投票
1 回答
24292 浏览

android - RecyclerView 中的 Swipe 和 OnClick 事件

我正在尝试实现滑动以关闭 RecyclerView 中的操作,但是当我在 ViewHolder 中的任何视图上设置 OnClickListener 时,它会覆盖该视图上的所有 OnTouch 事件。

我可以放弃 OnClickListener 并处理 TouchListener 中的所有点击,但如果我在 RecycleView 的子视图中有多个按钮,那将是很多代码,这看起来不是正确的方法。

在我的 RecyleView 中,我将 Swipe 设置为关闭侦听器(类似于此):

它在 ListView 中工作,但在 RecycleView 中,OnClickListener 会阻止 OnTouchListner 事件。

ViewHolder 视图的布局示例。

在 RecyclerView.Adapter 中充气:

视图持有者:

0 投票
5 回答
86207 浏览

android - RecyclerView 更改数据集

我想为我的 RecyclerView 实现搜索功能。在文本更改时,我想更改使用此小部件显示的数据。也许这个问题以前被问过或者很简单,但我不知道如何改变要显示的数据......

我的 RecyclerView 定义如下:

我展示的数据类似于:

那么当我想给适配器另一组数据,另一个数组(比如一个项目)时,我应该怎么做呢?

0 投票
15 回答
107810 浏览

android - 嵌套回收器视图高度不包含其内容

我有一个管理书籍集合(如播放列表)的应用程序。

我想显示一个带有垂直 RecyclerView 的集合列表,并在每行内显示一个水平 RecyclerView 中的书籍列表。

当我将内部水平 RecyclerView 的 layout_height 设置为 300dp 时,它可以正确显示,但是当我将其设置为 wrap_content 时,它什么也不显示。 我需要使用 wrap_content 因为我希望能够以编程方式更改布局管理器以在垂直和水平显示之间切换。

在此处输入图像描述

你知道我在做什么错吗?

我的片段布局:

集合元素布局:

书单项目:

这是我的收集适配器:

最后是 Book 适配器:

0 投票
1 回答
2200 浏览

android - Kitkat 中的 Android -RecyclerView

因为 RecyclerView src 在 android.support.v7.widget.RecyclerView 中,只要我从支持库(或谷歌播放服务)中引用这个包,我可以在 kit kat 和果冻豆中使用 recyclerView 吗?

0 投票
3 回答
4796 浏览

android - 填充 RecyclerView 时出现 ArrayIndexOutOfBoundsException

当我尝试填充我的 RecyclerView 时,我经常遇到错误,但错误似乎发生在StaggeredGridLayoutManager.

我从我的数据库中填充 RecyclerView 然后使用它将图像添加到我的适配器

奇怪的是,当应用程序首次加载时它很好并正确显示所有内容,但是如果我根据数据库查询用一组不同的图像替换当前在 RecyclerView 中的内容,然后再次返回初始图像,我会收到此错误。

它可以很好地遍历所有图像,但是当它准备好onBindViewHolder再次调用时它会崩溃。

当我更改 RecyclerView 中的数据时,我首先删除所有内容,然后再填充来自查询的新数据

我还尝试一次将它们全部插入,然后notifyItemRangeInserted使用起始位置和图像总数进行调用,但它仍然因相同的错误而崩溃。

编辑

当我击中大约 20 个左右需要放入网格的项目时,似乎会发生这种情况。如果我只是使用notifyDatasetChanged它似乎可以正常工作但我想使用notifyItemRangeInserted所以我得到了漂亮的插入动画

有没有其他人看到这个问题?

编辑2

这是我的onCreateViewHolder

和我的onBindViewHolder

编辑 3

这是我更换适配器时所做的

在我的导航抽屉的选定索引更改上我初始化我的加载程序以进行查询

然后在我的加载器的 onLoadFinished 中,我将对象添加到适配器