【问题标题】:how do I resolve E/RecyclerView: No adapter attached; skipping layout? [duplicate]如何解决 E/RecyclerView:未连接适配器;跳过布局? [复制]
【发布时间】:2020-04-06 18:08:15
【问题描述】:

我正在使用 firebase 数据库开发一个带有片段和回收器视图的应用程序。我希望应用程序从数据库中获取数据并将其显示在片段布局中。我几乎认为我的代码很好,应该可以正常工作。

我收到错误日志E/RecyclerView: No adapter attached; skipping layout

我在其他问题、论坛中尝试了所有方法。

这是我的 home.java 代码:

public class home extends Fragment {

private OnFragmentInteractionListener mListener;

public home() {
}
// TODO: Rename and change types and number of parameters
public static home newInstance() {
    home fragment = new home();
    Bundle args = new Bundle();
    fragment.setArguments(args);
    return fragment;
}

//to recycler view.
private RecyclerView recyclerView;
public View view;
private ArrayList<Model> listItem;
ViewAdapter Vadapter;
DatabaseReference dbRef;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    view = inflater.inflate(R.layout.fragment_home, container,false);
    recyclerView = view.findViewById(R.id.carDetailsContainer);
    listItem = new ArrayList<Model>();
    RecyclerView.LayoutManager layoutManager = new LinearLayoutManager(getContext());
    recyclerView.setLayoutManager(layoutManager);
    dbRef = FirebaseDatabase.getInstance().getReference().child("Cars");
    Vadapter = new ViewAdapter(getContext(),listItem);
    recyclerView.setAdapter(Vadapter);
    return inflater.inflate(R.layout.fragment_home, container, false);
}

@Override
public void onStart() {
    super.onStart();
    ValueEventListener valueEventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren())
            {
                Model model = new Model(ds.child("Name").getValue().toString(),ds.child("Milege").getValue().toString(),ds.child("Fuel").getValue().toString(),ds.child("Transmission").getValue().toString(),ds.child("Rate").getValue().toString());
                listItem.add(model);
            }

            Vadapter = new ViewAdapter(getContext(),listItem);
            recyclerView.setAdapter(Vadapter);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {

        }
    };

    dbRef.addValueEventListener(valueEventListener);
}

public interface OnFragmentInteractionListener {
    // TODO: Update argument type and name
    void onFragmentInteraction(Uri uri);
}

}

我的适配器类:

public class ViewAdapter extends RecyclerView.Adapter<ViewAdapter.MyViewHolder> {


DatabaseReference ref;
FirebaseDatabase fbRref;
Context context;
ArrayList<Model> model;

public ViewAdapter(Context c, ArrayList<Model> listItems)
{
    this.context = c;
    this.model = listItems;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    LayoutInflater inflater = LayoutInflater.from(context);
    View view = inflater.inflate(R.layout.car_details, parent, false);
    fbRref = FirebaseDatabase.getInstance();
    ref = fbRref.getReference();
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
    holder.carName.setText(model.get(position).getmCarName());
    holder.seatingCapacity.setText(model.get(position).getmSeatingCapacity());
}

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

class MyViewHolder extends RecyclerView.ViewHolder
{
    public TextView carName,seatingCapacity;
    public MyViewHolder(@NonNull View itemView)
    {
        super(itemView);
        carName = itemView.findViewById(R.id.car_name);
        seatingCapacity = itemView.findViewById(R.id.seating_capacity);
    }
}

}

我对此非常困惑。 提前致谢。

【问题讨论】:

标签: android firebase android-recyclerview


【解决方案1】:

尝试改变

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

return view;

【讨论】:

    【解决方案2】:

    您应该将 RecyclerView 的初始化移动到 onViewCreated 而不是 onCreateView,看看这个 answer

    【讨论】:

    • 充气器和容器出现“无法解析符号”
    • 你应该看开头蓝色框中的链接,它会帮助你解决你的问题
    猜你喜欢
    • 2020-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2021-05-04
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多