无适配器连接的回收视图;跳过布局

无适配器连接的回收视图;跳过布局

刚刚在我的代码中实现了回收视图,取代了Listview。

一切正常。显示对象。

但Logcat说

15:25:53.476 E/回收器视图:没有连接适配器;跳过布局

15:25:53.655 E/回收器视图:没有连接适配器;跳过布局

为代码

ArtistArrayAdapter adapter = new ArtistArrayAdapter(this, artists);recyclerView = (RecyclerView) findViewById(R.id.cardList);
recyclerView.setHasFixedSize(true);recyclerView.setAdapter(adapter);recyclerView.setLayoutManager(new LinearLayoutManager(this));

如您所见,我已经为回收站..那么,为什么我总是收到这个错误呢?

我读过与同一问题有关的其他问题,但没有任何帮助。


ibeautiful
浏览 636回答 3
3回答

尚方宝剑之说

我得到了相同的两条错误消息,直到我在代码中修复了两件事:(1)默认情况下,当您在RecyclerView.Adapter它产生:@Overridepublic&nbsp;int&nbsp;getItemCount()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;}请确保更新代码,使其显示:@Overridepublic&nbsp;int&nbsp;getItemCount()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;artists.size();}显然,如果您在您的项目中有零项,那么您将得到零的东西显示在屏幕上。(2)我并没有如上边答覆所示,这样做:CardView布局_宽度=“匹配_父”不匹配父循环视图宽度//correctLayoutInflater.from(parent.getContext()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.inflate(R.layout.card_listitem,&nbsp;parent,&nbsp;false);//incorrect&nbsp;(what&nbsp;I&nbsp;had)LayoutInflater.from(parent.getContext()) &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;.inflate(R.layout.card_listitem,null);(3)编辑:奖励:也要确保设置好RecyclerView就像这样:<android.support.v7.widget.RecyclerView &nbsp;&nbsp;&nbsp;&nbsp;android:id="@+id/RecyclerView" &nbsp;&nbsp;&nbsp;&nbsp;android:layout_width="match_parent" &nbsp;&nbsp;&nbsp;&nbsp;android:layout_height="match_parent" &nbsp;&nbsp;&nbsp;&nbsp;/>不是这样的:<view &nbsp;&nbsp;&nbsp;&nbsp;android:id="@+id/RecyclerView" &nbsp;&nbsp;&nbsp;&nbsp;class="android.support.v7.widget.RecyclerView" &nbsp;&nbsp;&nbsp;&nbsp;android:layout_width="match_parent" &nbsp;&nbsp;&nbsp;&nbsp;android:layout_height="match_parent"&nbsp;/>我已经看过一些使用后一种方法的教程。当它工作的时候,我认为它也会产生这个错误。

慕妹3146593

我和你有同样的情况,显示是可以的,但是错误出现在本地。这是我的解决方案:(1)初始化Create()上的ReccyclerView&BIND适配器RecyclerView&nbsp;mRecycler&nbsp;=&nbsp;(RecyclerView)&nbsp;this.findViewById(R.id.yourid);mRecycler.setAdapter(adapter);(2)当您获得数据时调用NotifyDataStateChangedadapter.notifyDataStateChanged();在回收视图的源代码中,还有其他线程来检查数据的状态。public&nbsp;RecyclerView(Context&nbsp;context,&nbsp;@Nullable&nbsp;AttributeSet&nbsp;attrs,&nbsp;int&nbsp;defStyle)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;super(context,&nbsp;attrs,&nbsp;defStyle); &nbsp;&nbsp;&nbsp;&nbsp;this.mObserver&nbsp;=&nbsp;new&nbsp;RecyclerView.RecyclerViewDataObserver(null); &nbsp;&nbsp;&nbsp;&nbsp;this.mRecycler&nbsp;=&nbsp;new&nbsp;RecyclerView.Recycler(); &nbsp;&nbsp;&nbsp;&nbsp;this.mUpdateChildViewsRunnable&nbsp;=&nbsp;new&nbsp;Runnable()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;void&nbsp;run()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(RecyclerView.this.mFirstLayoutComplete)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(RecyclerView.this.mDataSetHasChangedAfterLayout)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TraceCompat.beginSection("RV&nbsp;FullInvalidate"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecyclerView.this.dispatchLayout(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TraceCompat.endSection(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if(RecyclerView.this.mAdapterHelper.hasPendingUpdates())&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TraceCompat.beginSection("RV&nbsp;PartialInvalidate"); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecyclerView.this.eatRequestLayout(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecyclerView.this.mAdapterHelper.preProcess(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(!RecyclerView.this.mLayoutRequestEaten)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecyclerView.this.rebindUpdatedViewHolders(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RecyclerView.this.resumeRequestLayout(true); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;TraceCompat.endSection(); &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;};在DispatchLayout()中,我们可以发现其中存在错误:void&nbsp;dispatchLayout()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;if(this.mAdapter&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.e("RecyclerView",&nbsp;"No&nbsp;adapter&nbsp;attached;&nbsp;skipping&nbsp;layout"); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;if(this.mLayout&nbsp;==&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Log.e("RecyclerView",&nbsp;"No&nbsp;layout&nbsp;manager&nbsp;attached;&nbsp;skipping&nbsp;layout"); &nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;else&nbsp;{

qq_花开花谢_0

您能确保从“主”线程(例如在“主”线程中)调用这些语句吗?onCreate()方法)。当我从“延迟”方法调用相同的语句时。就我而言ResultCallback我收到了同样的信息。在我的Fragment中调用下面的代码。ResultCallback方法生成相同的消息。将代码移动到onConnected()方法在我的应用程序中,消息消失了.。LinearLayoutManager&nbsp;llm&nbsp;=&nbsp;new&nbsp;LinearLayoutManager(this);llm.setOrientation(LinearLayoutManager.VERTICAL);list.setLayoutManager(llm); list.setAdapter(&nbsp;adapter&nbsp;);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android