Android RecyclerView报错No adapter attached; skipping layout/No layout manager attached

RecyclerView的初始化通常要调用以下2个方法,不然不会显示

recycleView.setLayoutManager(manager);
recycleView.setAdapter(adapter);

一个是设定RecyclerView的布局,一个是绑定Adapter。

layout

setLayoutManager简单初始化可以如下:

LinearLayoutManager manager = new LinearLayoutManager(getApplication());
manager.setOrientation(LinearLayoutManager.VERTICAL);

adapter

adapter通常是我们继承RecyclerView.Adapter<RecyclerView.ViewHolder>重写Adapter,可以如下:

public class Adapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
{
    
    
    private ArrayList<DataBean> versions = new ArrayList<>();

    public void setDatas(ArrayList<DataBean> data)
    {
    
    
        this.data= data;
        notifyDataSetChanged();
    }

    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
    {
    
    
        View itemView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_data, parent, false);
        return new ViewHolder(itemView);
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position)
    {
    
    
        ViewHolder viewHolder = (ViewHolder) holder;
        if (data!= null && data.size() > 0)
        {
    
    
            viewHolder.name.setText(versions.get(position).getName());
            viewHolder.name2.setText(versions.get(position).getName2());
        }
    }

    @Override
    public int getItemCount()
    {
    
    
        return data== null ? 0 : data.size();
    }

    private static class ViewHolder extends RecyclerView.ViewHolder
    {
    
    
        TextView name;
        TextView name2;

        public ViewHolder(@NonNull View itemView)
        {
    
    
            super(itemView);
            name = itemView.findViewById(R.id.name);
            name2 = itemView.findViewById(R.id.name2);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/geniushorse/article/details/114128291