刚刚实施 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条答案
按热度按时间jbose2ul16#
我在这个问题上浪费了16分钟的时间,所以我要承认我犯了一个令人难以置信的尴尬错误——我使用butterknife,在这个片段中的oncreateview中绑定视图。
我花了很长时间才弄明白为什么没有layoutmanager,但是很明显视图是注入的,所以它们实际上不会为null,所以回收器永远不会为null。。哎呀!
如果您遇到这样的问题,请跟踪您的视图并使用
uiautomatorviewer
2exbekwf17#
我有同样的错误,我修正了它这样做,如果你是等待数据像我一样使用改装或类似的东西
放在oncreate之前
把它们放在你的oncreate里
当你收到数据时
现在进入你的ArtistarayAdapter类,做这个如果你的数组是空的或者是空的,它将使getitemcount返回0如果不是,它将使它成为Artisters数组的大小
2hh7jdfx18#
您能确保您是从延迟异步回调之外的“main”线程调用这些语句吗(例如在
onCreate()
方法)。只要我从“延迟”方法调用相同的语句。我的情况是ResultCallback
,我得到了同样的信息。在我的
Fragment
,从ResultCallback
方法生成相同的消息。将代码移到onConnected()
在我的应用程序中,消息不见了。。。jc3wubiy19#
请确保通过以下方式设置recyclerview的布局管理器:
而不是
LinearLayoutManager
,也可以使用其他布局管理器。ecfdbz9o20#
这真的是一个简单的错误,你得到的,没有必要在这做任何代码。发生此错误的原因是活动使用了错误的布局文件。通过ide,我自动创建了一个布局的布局v21,该布局成为活动的默认布局。我在旧布局文件和新布局文件中所做的所有代码都只有很少的xml代码,这导致了这个错误。
解决方案:复制旧布局的所有代码并粘贴到布局v21中
57hvy0tb21#
只要用这个替换上面的代码就可以了。错误的是在调用布局管理器之前调用了setadapter(adapter)。
i2byvkas22#
首先初始化适配器
当数据集中发生变化时,只需调用updatecomments方法。
jucafojl23#
这是因为实际的膨胀布局与您在查找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;
efzxgjgh24#
我和你有同样的情况,显示是可以的,但错误出现在locat。这就是我的解决方案:(1)初始化create()上的recyclerview&bind适配器
(2) 获取数据时调用notifydatastatechanged
在recyclerview的源代码中,还有其他线程来检查数据的状态。
在dispatchlayout()中,我们可以发现其中有错误:
anhgbhbe25#
我的问题是我的回收者观点是这样的
当它看起来像这样的时候
wmtdaxz326#
在你的
RecyclerView
例如,适配器类MyRecyclerViewAdapter
,生成具有以下参数的构造函数。MyRecyclerViewAdapter recyclerAdapter;
OurDataStuff mData;
....
wmomyfyw27#
我遇到了这个错误,我试着修复了一段时间,直到找到了解决方法。
我创建了一个私有方法buildrecyclerview,并调用了它两次,首先在oncreateview上调用,然后在回调之后调用(在回调中,我从api获取数据)。这是我片段中的方法buildrecyclerview:
此外,我还必须修改适配器中的get item count方法,因为在create视图上,list为null,并且它通过了一个错误。因此,我的get item计数如下:
to94eoyn28#
//当您在创建阶段没有设置适配器时会发生这种情况:当api响应开始工作时调用notifydatasetchanged()
idfiyjo829#
在修复代码中的两个问题之前,我收到了相同的两条错误消息:
(1) 默认情况下,在
RecyclerView.Adapter
它产生:确保更新代码,使其显示:
显然,如果您的项目中没有项目,那么您将在屏幕上显示零个项目。
(2) 我没有这样做,如顶部的答案所示:cardview layout\u width=“match\u parent”与parent recyclerview width不匹配
(3) 编辑:奖励:还要确保你设置了
RecyclerView
这样地:不是这样的:
我看过一些使用后一种方法的教程。当它工作的时候,我认为它也产生了这个错误。
q9rjltbz30#
在我的情况下,它是一个被遗忘的组件,位于viewholder类中,但它不位于布局文件中