刚刚实施 RecyclerView
在我的代码中,替换 ListView
.
一切正常。显示数据。
但正在记录错误消息:
15:25:53.476 E/RecyclerView: No adapter attached; skipping layout
15:25:53.655 E/RecyclerView: No adapter attached; skipping layout
对于以下代码:
ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);
recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);
recyclerView.setAdapter(adapter);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
如你所见,我已附加了一个适配器 RecyclerView
. 那为什么我总是犯这个错误呢?
我读过与同一问题有关的其他问题,但没有一个有用。
30条答案
按热度按时间hjzp0vay1#
这些线必须在
OnCreate
:vkc1a9a22#
我有这个问题,有几次的问题是循环查看放在scrollview对象中
在检查实现之后,原因似乎如下。如果将recyclerview放入scrollview中,那么在测量步骤中,它的高度是未指定的(因为scrollview允许任何高度),因此,它等于最小高度(根据实现),这显然是零。
您有两个选项可以解决此问题:
将一定高度设置为recyclerview
将scrollview.fillviewport设置为true
或者将recyclerview放在scrollview之外。在我看来,这是迄今为止最好的选择。如果recyclerview高度不受限制(在scrollview中就是这样),那么所有适配器的视图都有足够的垂直位置,可以一次创建所有视图。再也没有循环利用的观点了,这有点违背了循环利用观点的目的。
(可跟踪
android.support.v4.widget.NestedScrollView
以及)tcbh2hod3#
通过在底部设置初始化的空列表和适配器,并在获取结果时调用notifydatasetchanged来解决。
wztqucjr4#
我也遇到了同样的问题,并意识到在从源代码检索数据之后,我同时设置了layoutmanager和adapter,而不是在oncreate方法中设置这两个。
然后通知适配器数据更改
wnavrhmk5#
1) 创建不执行任何操作的viewholder:)
2) 再次创建不执行任何操作的recyclerview:)
3) 现在当你真正的回收商还没有准备好,就用下面的样品。
这不是最好的解决方案,但它的工作!希望这有帮助。
7fhtutme6#
在创建阶段未设置适配器时会发生这种情况:
只需将适配器设置移到oncreate中,并使用空数据调用,当您有数据调用时:
nbewdwxp7#
我已经解决了这个错误。您只需要添加布局管理器并添加空适配器。
像这样的代码:
egdjgwm88#
添加另一个答案,因为我发现这个线程谷歌的错误。我想初始化一个
PreferenceFragmentCompat
但我忘了在xml中夸大偏好onCreatePreferences
这样地:在我意识到之前,这个错误一直是个谜
PreferenceFragmentCompat
必须使用RecyclerView
内部。sf6xfgos9#
对于那些使用
RecyclerView
在片段中,并从其他视图将其充气:在充气整个片段视图时,请确保绑定RecyclerView
到它的根视图。我正在连接并正确地为适配器执行所有操作,但我从未执行绑定。这个由@prateek agarwal给出的答案对我来说已经足够了,但是这里有更多的细节。
Kotlin
java
evrscar210#
在Kotlin我们遇到了一个奇怪的不合逻辑的问题。
这不起作用:
当这起作用时:
一旦下班后我得到更多,我会分享更多的见解。
xxe27gdn11#
在我的情况下,我是在里面设置适配器
onLocationChanged()
在模拟器中进行回调和调试。因为它没有检测到位置改变,所以它从未开火。当我在模拟器的扩展控件中手动设置它们时,它按预期工作。jslywgbw12#
此问题是因为您没有添加任何
LayoutManager
为了你的RecyclerView
.另一个原因是您在非uithread中调用此代码。确保在uithread中调用此调用。
解决办法是你只需要加一个
LayoutManager
对于RecyclerView
在你之前setAdapter
在ui线程中。ki1q1bka13#
在我的例子中,这是因为我在线性布局中嵌入了一个recyclerview。
我以前有一个布局文件只包含一个根recyclerview,如下所示
我相信问题出在三条线之间。不管怎样,我认为这是一个简单的问题,我明天就着手解决;我想我应该在忘记这条线索之前把我发现的写下来。
zrfyljdw14#
检查是否错过了在适配器中调用此方法
kxkpmulp15#
只需将以下内容添加到
RecyclerView
```app:layoutManager="android.support.v7.widget.LinearLayoutManager"
<android.support.v7.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"
app:layoutManager="android.support.v7.widget.LinearLayoutManager"
app:layout_constraintBottom_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">