You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Fragment中解决RecyclerView"No adapter attached skipping layout"问题

问题:Fragment中的RecyclerView无法显示Firebase加载的数据

实现逻辑说明

我已在Fragment的onCreateView方法中完成RecyclerView初始化、适配器绑定,以及从Firebase加载数据填充ArrayList的逻辑,适配器数据源为ArrayList类型的plist。同时已在RecyclerView布局中通过app:layoutManager属性设置LinearLayoutManager,自认为适配器代码无问题,但数据始终无法显示。

Fragment代码

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                     Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View rootView = inflater.inflate(R.layout.fragment_buy, container, false);

    recyler = rootView.findViewById(R.id.recycler);
    recyler.setHasFixedSize(true);

    reference = FirebaseDatabase.getInstance().getReference("Produce");

    plist = new ArrayList<>();
    adapter = new Produce_RecyclerViewAdapter(rootView.getContext(), plist);
    recyler.setAdapter(adapter);
    final int count = 0;
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {

            for (DataSnapshot ds : snapshot.getChildren()) {

                Produce produce = ds.getValue(Produce.class);
                plist.add(produce);

            }
            adapter.notifyDataSetChanged();

        }

        @Override
        public void onCancelled(@NonNull DatabaseError error) {
            Display();
        }

    });


    return inflater.inflate(R.layout.fragment_buy, container, false);
}

RecyclerView适配器代码

public class Produce_RecyclerViewAdapter extends RecyclerView.Adapter<Produce_RecyclerViewAdapter.ViewHolder>{
private final List<Produce> produce_item;
private final Context context;

public Produce_RecyclerViewAdapter(Context context, ArrayList<Produce> produce_item) {
    this.produce_item = produce_item;
    this.context = context;
}

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

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
    Produce produce = produce_item.get(position);
    holder.ptitle.setText(produce.getPname());
    holder.pprice.setText(produce.getPprice());
    Picasso.with(context)
            .load(produce.getPimg())
            .placeholder(R.mipmap.ic_launcher)
            .fit()
            .centerCrop()
            .into(holder.pimage);
}

@Override
public int getItemCount() {
    return produce_item.size();
}

public class ViewHolder extends RecyclerView.ViewHolder{
    ImageView pimage;
    TextView ptitle, pprice;
    CardView view, addtocart;


    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        pimage = itemView.findViewById(R.id.pimage);
        ptitle = itemView.findViewById(R.id.ptitle);
        pprice = itemView.findViewById(R.id.pprice);
        view = itemView.findViewById(R.id.view);
        addtocart = itemView.findViewById(R.id.addtocart);

    }
}
}

RecyclerView布局代码

<androidx.recyclerview.widget.RecyclerView
        android:id="@+id/recycler"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:orientation="vertical"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"/>

Firebase数据结构

Firebase中Produce节点下包含多个子项,每个子项均包含pname(商品名称)、pprice(商品价格)、pimg(商品图片链接)等字段,数据格式正常。

已尝试的解决步骤

我已查阅“RecyclerView No adapter attached; skipping layout”相关问题及其他资料,要么已尝试对应的解决方案,要么这些方案仅针对Activity中的RecyclerView,问题仍未解决。


内容的提问来源于stack exchange,提问作者Belko DIALLO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 21:45:17