刚刚实施 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条答案
按热度按时间nfeuvbwi1#
这是因为实际的膨胀布局与您在查找recyclerview时引用的布局不同。默认情况下,创建片段时,oncreateview方法如下所示:
return inflater.inflate(R.layout.<related layout>,container.false);
相反,单独创建视图并使用它来引用recyclerviewView view= inflater.inflate(R.layout.<related layout>,container.false); recyclerview=view.findViewById(R.id.<recyclerView ID>); return view;
mzsu5hc02#
检查是否错过了在适配器中调用此方法
hrirmatl3#
在你的
RecyclerView
例如,适配器类MyRecyclerViewAdapter
,生成具有以下参数的构造函数。MyRecyclerViewAdapter recyclerAdapter;
OurDataStuff mData;
....
yvfmudvl4#
1) 创建不执行任何操作的viewholder:)
2) 再次创建不执行任何操作的recyclerview:)
3) 现在当你真正的回收商还没有准备好,就用下面的样品。
这不是最好的解决方案,但它的工作!希望这有帮助。
vcudknz35#
请确保通过以下方式设置recyclerview的布局管理器:
而不是
LinearLayoutManager
,也可以使用其他布局管理器。fslejnso6#
此问题是因为您没有添加任何
LayoutManager
为了你的RecyclerView
.另一个原因是您在非uithread中调用此代码。确保在uithread中调用此调用。
解决办法是你只需要加一个
LayoutManager
对于RecyclerView
在你之前setAdapter
在ui线程中。txu3uszq7#
在修复代码中的两个问题之前,我收到了相同的两条错误消息:
(1) 默认情况下,在
RecyclerView.Adapter
它产生:确保更新代码,使其显示:
显然,如果您的项目中没有项目,那么您将在屏幕上显示零个项目。
(2) 我没有这样做,如顶部的答案所示:cardview layout\u width=“match\u parent”与parent recyclerview width不匹配
(3) 编辑:奖励:还要确保你设置了
RecyclerView
这样地:不是这样的:
我看过一些使用后一种方法的教程。当它工作的时候,我认为它也产生了这个错误。
d5vmydt98#
我遇到了这个错误,我试着修复了一段时间,直到找到了解决方法。
我创建了一个私有方法buildrecyclerview,并调用了它两次,首先在oncreateview上调用,然后在回调之后调用(在回调中,我从api获取数据)。这是我片段中的方法buildrecyclerview:
此外,我还必须修改适配器中的get item count方法,因为在create视图上,list为null,并且它通过了一个错误。因此,我的get item计数如下:
z6psavjg9#
我也遇到了同样的问题,并意识到在从源代码检索数据之后,我同时设置了layoutmanager和adapter,而不是在oncreate方法中设置这两个。
然后通知适配器数据更改
knpiaxh110#
首先初始化适配器
当数据集中发生变化时,只需调用updatecomments方法。
5uzkadbs11#
我的问题是我的回收者观点是这样的
当它看起来像这样的时候
gev0vcfq12#
通过在底部设置初始化的空列表和适配器,并在获取结果时调用notifydatasetchanged来解决。
1dkrff0313#
在我的例子中,这是因为我在线性布局中嵌入了一个recyclerview。
我以前有一个布局文件只包含一个根recyclerview,如下所示
我相信问题出在三条线之间。不管怎样,我认为这是一个简单的问题,我明天就着手解决;我想我应该在忘记这条线索之前把我发现的写下来。
bn31dyow14#
这些线必须在
OnCreate
:wf82jlnq15#
您能确保您是从延迟异步回调之外的“main”线程调用这些语句吗(例如在
onCreate()
方法)。只要我从“延迟”方法调用相同的语句。我的情况是ResultCallback
,我得到了同样的信息。在我的
Fragment
,从ResultCallback
方法生成相同的消息。将代码移到onConnected()
在我的应用程序中,消息不见了。。。