recyclerview No adapter attached; skipping layout

后端 未结 30 3065
走了就别回头了
走了就别回头了 2020-11-21 04:51

Just implemented RecyclerView in my code, replacing ListView.

Everything works fine. The data is displayed.

But error messages are

相关标签:
30条回答
  • 2020-11-21 05:05

    // It happens when you are not setting the adapter during the creation phase: call notifyDataSetChanged() when api response is getting Its Working

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity);
    
    
            magazineAdapter = new MagazineAdapter(getContext(), null, this );
            newClipRecyclerView.setAdapter(magazineAdapter);
            magazineAdapter.notifyDataSetChanged();
    
           APICall();
    }
    
    public void APICall() {
        if(Response.isSuccessfull()){
        mRecyclerView.setAdapter(mAdapter);
       }
    }
    Just move setting the adapter into onCreate with an empty data and when you have the data call:
    
    mAdapter.notifyDataSetChanged();
    
    0 讨论(0)
  • 2020-11-21 05:07

    1) Create ViewHolder that does nothing :)

    // SampleHolder.java
    public class SampleHolder extends RecyclerView.ViewHolder {
        public SampleHolder(View itemView) {
            super(itemView);
        }
    }
    

    2) Again create RecyclerView that does nothing :)

    // SampleRecycler.java
    public class SampleRecycler extends RecyclerView.Adapter<SampleHolder> {
        @Override
        public SampleHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return null;
        }
    
        @Override
        public void onBindViewHolder(SampleHolder holder, int position) {
    
        }
    
        @Override
        public int getItemCount() {
            return 0;
        }
    }
    

    3) Now when your real recycler is not ready just use the sample one like below.

    RecyclerView myRecycler = (RecyclerView) findViewById(R.id.recycler_id);
    myRecycler.setLayoutManager(new LinearLayoutManager(this));
    myRecycler.setAdapter(new SampleRecycler());
    

    This is not best solution though but it works! Hope this is helpful.

    0 讨论(0)
  • 2020-11-21 05:07

    In my case, I was setting the adapter inside onLocationChanged() callback AND debugging in the emulator. Since it didn't detected a location change it never fired. When I set them manually in the Extended controls of the emulator it worked as expected.

    0 讨论(0)
  • 2020-11-21 05:10

    Check if you have missed to call this method in your adapter

    @Override
    public int getItemCount() {
        return list.size();
    }
    
    0 讨论(0)
  • 2020-11-21 05:10

    This is really a simple error you are getting, there in no need of doing any codes in this. This error occurs due to the wrong layout file used by the activity. By IDE i automatically created a layout v21 of a layout which became a default layout of the activity. all codes I did in the old layout file and new one was only having few xml codes, which led to that error.

    Solution: Copy all codes of old layout and paste in layout v 21

    0 讨论(0)
  • 2020-11-21 05:10

    I lost 16 minutes of my life with this issue, so I'll just admit to this incredibly embarrassing mistake that I was making- I'm using Butterknife and I bind the view in onCreateView in this fragment.

    It took a long time to figure out why I had no layoutmanager - but obviously the views are injected so they won't actually be null, so the the recycler will never be null .. whoops!

    @BindView(R.id.recycler_view)
    RecyclerView recyclerView;
    
        @Override
    public View onCreateView(......) {
        View v = ...;
        ButterKnife.bind(this, v);
        setUpRecycler()
     }
    
    public void setUpRecycler(Data data)
       if (recyclerView == null) {
     /*very silly because this will never happen*/
           LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
           //more setup
           //...
        }
        recyclerView.setAdapter(new XAdapter(data));
    }
    

    If you are getting an issue like this trace your view and use something like uiautomatorviewer

    0 讨论(0)
提交回复
热议问题