为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

ibeautiful 2019-06-05 14:34:48
无适配器连接的回收视图;跳过布局刚刚在我的代码中实现了回收视图,取代了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));如您所见,我已经为回收站..那么,为什么我总是收到这个错误呢?我读过与同一问题有关的其他问题,但没有任何帮助。
查看完整描述

3 回答

?
尚方宝剑之说

TA贡献1788条经验 获得超4个赞

我得到了相同的两条错误消息,直到我在代码中修复了两件事:

(1)默认情况下,当您在RecyclerView.Adapter它产生:

@Overridepublic int getItemCount() {
    return 0;}

请确保更新代码,使其显示:

@Overridepublic int getItemCount() {
    return artists.size();}

显然,如果您在您的项目中有零项,那么您将得到零的东西显示在屏幕上。

(2)我并没有如上边答覆所示,这样做:CardView布局_宽度=“匹配_父”不匹配父循环视图宽度

//correctLayoutInflater.from(parent.getContext())
            .inflate(R.layout.card_listitem, parent, false);//incorrect (what I had)LayoutInflater.from(parent.getContext())
        .inflate(R.layout.card_listitem,null);

(3)编辑:奖励:也要确保设置好RecyclerView就像这样:

<android.support.v7.widget.RecyclerView
    android:id="@+id/RecyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

不是这样的:

<view
    android:id="@+id/RecyclerView"
    class="android.support.v7.widget.RecyclerView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />

我已经看过一些使用后一种方法的教程。当它工作的时候,我认为它也会产生这个错误。


查看完整回答
反对 回复 2019-06-05
?
慕妹3146593

TA贡献1820条经验 获得超9个赞

我和你有同样的情况,显示是可以的,但是错误出现在本地。这是我的解决方案:(1)初始化Create()上的ReccyclerView&BIND适配器

RecyclerView mRecycler = (RecyclerView) this.findViewById(R.id.yourid);mRecycler.setAdapter(adapter);

(2)当您获得数据时调用NotifyDataStateChanged

adapter.notifyDataStateChanged();

在回收视图的源代码中,还有其他线程来检查数据的状态。

public RecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    this.mObserver = new RecyclerView.RecyclerViewDataObserver(null);
    this.mRecycler = new RecyclerView.Recycler();
    this.mUpdateChildViewsRunnable = new Runnable() {
        public void run() {
            if(RecyclerView.this.mFirstLayoutComplete) {
                if(RecyclerView.this.mDataSetHasChangedAfterLayout) {
                    TraceCompat.beginSection("RV FullInvalidate");
                    RecyclerView.this.dispatchLayout();
                    TraceCompat.endSection();
                } else if(RecyclerView.this.mAdapterHelper.hasPendingUpdates()) {
                    TraceCompat.beginSection("RV PartialInvalidate");
                    RecyclerView.this.eatRequestLayout();
                    RecyclerView.this.mAdapterHelper.preProcess();
                    if(!RecyclerView.this.mLayoutRequestEaten) {
                        RecyclerView.this.rebindUpdatedViewHolders();
                    }

                    RecyclerView.this.resumeRequestLayout(true);
                    TraceCompat.endSection();
                }

            }
        }
    };

在DispatchLayout()中,我们可以发现其中存在错误:

void dispatchLayout() {
    if(this.mAdapter == null) {
        Log.e("RecyclerView", "No adapter attached; skipping layout");
    } else if(this.mLayout == null) {
        Log.e("RecyclerView", "No layout manager attached; skipping layout");
    } else {


查看完整回答
反对 回复 2019-06-05
?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

您能确保从“主”线程(例如在“主”线程中)调用这些语句吗?onCreate()方法)。当我从“延迟”方法调用相同的语句时。就我而言ResultCallback我收到了同样的信息。

在我的Fragment中调用下面的代码。ResultCallback方法生成相同的消息。将代码移动到onConnected()方法在我的应用程序中,消息消失了.。

LinearLayoutManager llm = new LinearLayoutManager(this);llm.setOrientation(LinearLayoutManager.VERTICAL);list.setLayoutManager(llm);
list.setAdapter( adapter );


查看完整回答
反对 回复 2019-06-05
  • 3 回答
  • 0 关注
  • 635 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信