问题标签 [linearlayoutmanager]

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 投票
2 回答
919 浏览

android - RecyclerView中的动态高度Glide ImageView在调用notifydatasetchanged时闪烁?

我正在创建一个 RecyclerView 来显示一些图像和文本,然后用户可以为 RecyclerView 的行添加书签。RecyclerView 的图像在宽度和高度上匹配父级将是 wrap_content。单击书签时,适配器会在 RecyclerView 中调用 notifydatasetchanged。我的问题是,在调用 notifydatasetchanged 更改后,RecyclerView 会按高度闪烁其图像。

OnButton 单击

RecyclerView 配置

0 投票
2 回答
1185 浏览

android - RecyclerView - 水平 LinearLayoutManager 创建/绑定方法过于频繁地调用

目前,我对 Android 上的 LinearLayoutManagers 和 RecyclerViews 的以下问题的想法已经结束:

我想达到什么场景

一个水平的 RecyclerView,用户可以在其上快速滑动,而不受任何限制。全屏大小的项目使它们与recyclerview本身一样大。当投掷停止或用户手动停止时,回收器应该滚动到一个项目(有点模仿 viewPager)(我正在使用支持修订版 25.1.0)

代码片段

寻呼机类本身

项目的 xml 布局

(注意:根视图必须可点击以用于应用程序内的其他目的)

带有寻呼机本身的 xml 布局

(非常嵌套?可能是问题的原因?我不知道......)

与 ViewHolders 相关的适配器的一部分

视图持有者

所以,这是我的问题!

初始化适配器时,我通过 observable 插入大约 15 到 17 个项目。这似乎是正确的:

初始化日志记录没问题

但是当水平滑动时,recyclerView 的回调似乎完全搞砸了,并产生了奇怪的结果:

乱七八糟的日志

你看到回收者根本没有尝试回收旧的 viewHolders 吗?该图像仅显示了正在发生的“垃圾邮件”的一小部分。有时,当我慢慢滚动回收器时,它会为同一位置创建一个新的 viewHolder 甚至超过两次!

绑定垃圾邮件

另一个问题是:监听器当前应该允许我将绑定/回收事件传递给底层游戏引擎,该引擎将在屏幕上创建销毁实体。由于事件的过度垃圾邮件,它目前也会过度创建这些实体!

我期望 Recycler 第一次(比如说在我的示例 17 中)创建一个新的 ViewHolder,然后按照它应该的方式重用这些项目。

请帮忙,我在这个问题上停留了 2 天,在搜索有同样问题但没有运气的人后,我感到很沮丧。谢谢!

0 投票
3 回答
3736 浏览

android - 加载时将 Recyclerview 项目对齐到中心

我正在使用无限滚动的循环器视图,其中包含重复的 X 项。我也想使用PagerSnapHelper()像 viewpager 一样捕捉滚动。

所以最初加载列表时,显示就像 - 在此处输入图像描述

一旦我开始在左右两侧滚动,PageSnapHelper() 就会开始工作,就像 viewpager 一样,中心对齐是这样的 -在此处输入图像描述

我想在最初加载时将 recyclerview 显示为第二张图像。请告诉接下来要做什么来实现这一目标。

这是代码片段 -

0 投票
10 回答
12718 浏览

android - RecyclerView 在聊天屏幕中的 notifyDataSetChanged 上滚动到顶部

我正在尝试使用 recyclerView 创建消息类型的屏幕,该屏幕将从底部开始,并在用户到达聊天的顶端时加载更多数据。但我正面临这个奇怪的问题。

我的 recyclerView 在调用 notifyDataSetChanged 时滚动到顶部。由于这个 onLoadMore 被多次调用。

这是我的代码:

** 在适配器中

** 在活动中

只是 recyclerView 滚动到顶部。如果滚动到顶部停止,此问题将得到解决。请帮我找出这个问题的原因。提前致谢。

0 投票
3 回答
3904 浏览

android - 在特定位置更改 RecyclerView 项的背景

我有一个RecyclerView并单击它的项目需要一个新的Activity. 有一个ViewPager包含多个项目。按下后,我正在保存当前项目位置。ViewPager我想要做的是当用户站在RecyclerView.

问题

当项目的位置可见时,没有问题。我使用以下更改背景

但如果项目不可见,则什么也没有发生,我无法更改背景。

到目前为止我做了什么

  1. 试图滚动到一个位置,然后改变背景。RecyclerView滚动正确,但findViewByPosition返回 null。
  2. 我相信根据我的观察(可能是错误的),在以编程方式滚动RecyclerView时,它被滚动到的位置将是它最后一个可见的项目。我试图这样做,但没有运气。
  3. 正如许多人所建议的那样,放置Thread.sleep(100)然后尝试获得位置。这也没有用。

注意:我不能这样做,onBindViewHolder因为要突出显示的项目不是预定义的。

0 投票
2 回答
172 浏览

android - RecycleView中第一个元素的Android自定义LayoutManager

我想用这个链接http://www.corelangs.com/html/tables/img/colspan-rowspan.png上看起来像左图的布局来实现 RecycleView

我只希望第一个元素具有 100% 的行宽,其他行应该分成两列。任何想法/教程如何做到这一点?

0 投票
2 回答
1542 浏览

android - Android Recyclerview:单击按钮时将行从线性更改为网格

单击按钮时,我想将列表视图更改为网格视图,就像在购物车页面上一样,但我的布局看起来像下面显示的链接。

网格视图

列表显示

0 投票
0 回答
1951 浏览

android - 带有水平 RecyclerView 的 layoutManager.findFirstVisibleItemPosition()

我正在为一个学校项目编写一个 Android 应用程序。

我已经RecyclerView使用LinearLayoutManager.HORIZONTAL.

我想让一个特定的元素,例如元素 n,位于当前可见元素集 的中间,如下所示:在此处输入图像描述

我四处搜索,发现了这个链接:https ://www.reddit.com/r/androiddev/comments/3o0xzw/how_do_you_scroll_to_an_item_with_recyclerview_to/

解决方案涉及取一半的总和layoutManager.findFirstVisibleItemPosition()并将layoutManager.findLastVisibleItemPosition()其添加到您想要位于中间的元素的位置。

RecyclerView.NO_POSITION但是,当我使用这个水平滚动时,这两个方法总是返回RecyclerView,因此总和的一半是 0,它会使计算变得无用。

这是我的代码:

我可以知道是否有人有解决此问题的方法吗?提前致谢。

编辑:当我尝试实现 aonScrollListener和 cast recyclerView.getLayoutManager()to 时LinearLayoutManager,这些方法工作得很好。我可以知道为什么吗?

编辑2:

我在这里使用了这个解决方案:RecyclerView smoothScroll to position in the center。android,但是为什么方法会返回NO_POSITION

0 投票
5 回答
276 浏览

android - 使用 LinearLayoutManager 集中 RecyclerView

我正在尝试将RecyclerView列表集中在屏幕上。这将是一个单一的列表,所以我将使用LinearLayoutManager(LLM)。然而,使用 LLM 它不会集中项目,它在横向模式下看起来像这样: LLM横向模式

XML 代码如下所示:

在 Android Studio 的预览版上,它看起来不错,但在应用程序上,它不是。我设法通过将 LLM 更改为GridLayoutManager仅包含一列的 a 来修复它。但它看起来很丑。

有谁知道发生了什么?谢谢。

0 投票
0 回答
1190 浏览

android - 如何在 android 中检查水平 RecyclerView 方向?

描述:

我正在水平使用带有 LinearLayoutManager 的 RecyclerView。在这方面,我试图找到方向。Recyclerview 正在从左到右或从右到左移动。

这是我的代码:

问题:

当我触摸屏幕滚动 RecyclerView 项目时。它进入滚动视图中的多次。

我该怎么做?