问题标签 [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.
android - RecyclerView中的动态高度Glide ImageView在调用notifydatasetchanged时闪烁?
我正在创建一个 RecyclerView 来显示一些图像和文本,然后用户可以为 RecyclerView 的行添加书签。RecyclerView 的图像在宽度和高度上匹配父级将是 wrap_content。单击书签时,适配器会在 RecyclerView 中调用 notifydatasetchanged。我的问题是,在调用 notifydatasetchanged 更改后,RecyclerView 会按高度闪烁其图像。
OnButton 单击
RecyclerView 配置
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 天,在搜索有同样问题但没有运气的人后,我感到很沮丧。谢谢!
android - RecyclerView 在聊天屏幕中的 notifyDataSetChanged 上滚动到顶部
我正在尝试使用 recyclerView 创建消息类型的屏幕,该屏幕将从底部开始,并在用户到达聊天的顶端时加载更多数据。但我正面临这个奇怪的问题。
我的 recyclerView 在调用 notifyDataSetChanged 时滚动到顶部。由于这个 onLoadMore 被多次调用。
这是我的代码:
** 在适配器中
** 在活动中
只是 recyclerView 滚动到顶部。如果滚动到顶部停止,此问题将得到解决。请帮我找出这个问题的原因。提前致谢。
android - 在特定位置更改 RecyclerView 项的背景
我有一个RecyclerView
并单击它的项目需要一个新的Activity
. 有一个ViewPager
包含多个项目。按下后,我正在保存当前项目位置。ViewPager
我想要做的是当用户站在RecyclerView
.
问题
当项目的位置可见时,没有问题。我使用以下更改背景
但如果项目不可见,则什么也没有发生,我无法更改背景。
到目前为止我做了什么
- 试图滚动到一个位置,然后改变背景。
RecyclerView
滚动正确,但findViewByPosition
返回 null。 - 我相信根据我的观察(可能是错误的),在以编程方式滚动
RecyclerView
时,它被滚动到的位置将是它最后一个可见的项目。我试图这样做,但没有运气。 - 正如许多人所建议的那样,放置
Thread.sleep(100)
然后尝试获得位置。这也没有用。
注意:我不能这样做,onBindViewHolder
因为要突出显示的项目不是预定义的。
android - RecycleView中第一个元素的Android自定义LayoutManager
我想用这个链接http://www.corelangs.com/html/tables/img/colspan-rowspan.png上看起来像左图的布局来实现 RecycleView
我只希望第一个元素具有 100% 的行宽,其他行应该分成两列。任何想法/教程如何做到这一点?
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
?
android - 如何在 android 中检查水平 RecyclerView 方向?
描述:
我正在水平使用带有 LinearLayoutManager 的 RecyclerView。在这方面,我试图找到方向。Recyclerview 正在从左到右或从右到左移动。
这是我的代码:
问题:
当我触摸屏幕滚动 RecyclerView 项目时。它进入滚动视图中的多次。
我该怎么做?