RecyclerView:没有附加适配器;跳过布局错误

Posted

技术标签:

【中文标题】RecyclerView:没有附加适配器;跳过布局错误【英文标题】:RecyclerView: No adapter attached; skipping layout Error 【发布时间】:2017-06-07 21:04:29 【问题描述】:

关于这个错误,我已经提到了很多帖子,但没有一个能够解决我的问题。我有一个片段,我使用改造获得我的价值观,如下所示:

public class Tab extends Fragment

public String nlink;
public RecyclerView recycler;
public List<Initialise> item;
public Adapter adapter;
public Context mContext;

public Tab(Context mContext)

    this.mContext=mContext;



@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)

    View v= inflater.inflate(R.layout.tab_layout,container,false);
    item = new ArrayList<>();
    recycler=(RecyclerView)v.findViewById(R.id.recycler);
    recycler.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(getContext());
    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recycler.setLayoutManager(llm);
    recycler.setItemAnimator(new DefaultItemAnimator());
    adapter = new Adapter(item,mContext);
    recycler.setAdapter(adapter);
    return v;


@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState)

    super.onViewCreated(view, savedInstanceState);
    Bundle bundle=getArguments();
    nlink=bundle.getString("link");
    Retrofit adapter = new Retrofit.Builder()
            .baseUrl(ItemAdapter.ROOT_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

    Service Serviceapi = adapter.create(Service.class);
    Serviceapi.getitem(nlink).enqueue(new Callback<Item>()
    
        @Override
        public void onResponse(Call<Item> call, Response<Item> response)
        
            for(int i=0;i<response.body().getitems().size();i++)
            
                item.add(new Initialise(response.body().getitems().get(i).getTitle(),response.body().getitems().get(i).getDate(),response.body().getitems().get(i).getcount(),response.body().getitems().get(i).getImage()));
            
            adapter.notifyDataSetChanged();
        

        @Override
        public void onFailure(Call<Item> call, Throwable t)
        

        
    );


以下是我的 RecyclerView 适配器类:

public class Adapter extends RecyclerView.Adapter<Adapter.Holder>

static class Holder extends RecyclerView.ViewHolder

    CardView cv;
    ImageView thum_img;
    TextView thum_time;
    TextView thum_count;
    TextView thum_text;

    Holder(View itemView)
    
        super(itemView);
        cv = (CardView)itemView.findViewById(R.id.cv);
        thum_img = (ImageView)itemView.findViewById(R.id.thum_img);
        thum_time = (TextView)itemView.findViewById(R.id.thum_time);
        thum_count = (TextView)itemView.findViewById(R.id.thum_scount);
        thum_text = (TextView)itemView.findViewById(R.id.thum_text);
    


private List<Initialise> item;
private Context mContext;

public Adapter(List<Initialise> item, Context mContext)

    this.item=item;
    this.mContext=mContext;


@Override
public Holder onCreateViewHolder(ViewGroup parent, int viewType)

    View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.tab_layout, parent, false);
    return new Holder(v);


@Override
public void onBindViewHolder(Holder holder, int position)
      
    holder.thum_text.setText(item.get(position).gettitle());
    holder.thum_time.setText(item.get(position).gettime());
    holder.thum_count.setText(item.get(position).getcount());
    Picasso.with(mContext).load(item.get(position).getstoryImage()).resize(120, 60).into(holder.thum_img);


@Override
public int getItemCount()

    return item.size();


我收到以下错误:

E/RecyclerView:没有附加适配器;跳过布局

我的 cardview 没有显示,viewpager 是空的。我哪里错了?

【问题讨论】:

显示什么错误? E/RecyclerView:未连接适配器;跳过布局 从服务器获取记录并在 Fragment 的 onCreate() 方法中初始化 ArrayList,而不是在 onViewCreated() 方法中。在您的代码中,适配器使用空 ArrayList 初始化,这就是问题 什么是 Initialise 和 NewsInitialise?检查构造函数和全局变量项?还发布完整的堆栈跟踪 @Amrut Bidri。关于 NewsInitialise ,对不起,我现在已经编辑了这个问题。请检查。关于堆栈跟踪,这是我得到的唯一错误。一切看起来都很好。 【参考方案1】:

尝试编辑onCreateViewHolder()方法

View layoutView = LayoutInflater.from(parent.getContext()).inflate(R.layout.tab_layout,parent,false);
        Holder rcv = new Holder(layoutView,mContext);
        return rcv;

【讨论】:

我应该将 Holder 类中的上下文作为额外参数传递吗?在 Holder 类中获取上下文时,我应该为上下文分配什么? 我尝试在 Holder 类中使用 this.mContext 分配 mContext,但仍然遇到相同的错误

以上是关于RecyclerView:没有附加适配器;跳过布局错误的主要内容,如果未能解决你的问题,请参考以下文章

RecyclerView:没有附加适配器;跳过布局[重复]

Firebase:Recyclerview 没有附加适配器,跳过布局

Firebase:Recyclerview 没有附加适配器,跳过布局

E/RecyclerView:没有附加适配器;在片段内的recyclerview上跳过布局

RecyclerView:没有附加适配器;跳过布局错误

Firebase:RecyclerView 跳过布局没有附加适配器