Android RecyclerView:未连接适配器;跳过布局没有显示数据

Android RecyclerView:未连接适配器;跳过布局没有显示数据,android,android-cardview,Android,Android Cardview,它没有错误,但当我运行时,支架没有显示,当我查看logcat时,有一个错误RecyclerView:没有连接适配器;跳过布局。这是我的密码;我已经将布局管理器添加到我的recyclerview中,但它仍然没有显示适配器连接的跳过布局 下面是我的片段类和适配器类代码,供参考。请告诉我有什么问题 public class dogs extends Fragment { private RecyclerView recyclerView; private PostAdapter po

它没有错误,但当我运行时,支架没有显示,当我查看logcat时,有一个错误RecyclerView:没有连接适配器;跳过布局。这是我的密码;我已经将布局管理器添加到我的recyclerview中,但它仍然没有显示适配器连接的跳过布局

下面是我的片段类和适配器类代码,供参考。请告诉我有什么问题

public class dogs extends Fragment 
{
    private RecyclerView recyclerView;
    private PostAdapter postAdapter;
    private List<Model> ModelList;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_dogs, container, false);


        recyclerView = view.findViewById(R.id.Feeddogs);
        recyclerView.setHasFixedSize(true);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getContext());
        linearLayoutManager.setStackFromEnd(true);
        linearLayoutManager.setReverseLayout(true);
        recyclerView.setLayoutManager(linearLayoutManager);

        ModelList = new ArrayList<>();
        postAdapter = new PostAdapter(getContext(),ModelList);
        recyclerView.setAdapter(postAdapter);


      showdata();


        return view;
    }

    private void showdata() {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Dogs");
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                ModelList.clear();
                for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
                    Model model = snapshot.getValue(Model.class);
                    ModelList.add(model);

                }

            }

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

            }
        });
    }
}
这是我的适配器代码

public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> {

    public Context mContext;
    public List<Model> mPost;

    private FirebaseUser firebaseUser;

    public PostAdapter(Context mContext, List<Model> mPost) {
        this.mContext = mContext;
        this.mPost = mPost;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
        Model model = mPost.get(position);
        Glide.with(mContext).load(model.getPetpicture()).into(holder.postimage);
        holder.postname.setText(model.getPetname());
        holder.postbreed.setText(model.getBreed());
        holder.postage.setText(model.getAge());
        holder.postsize.setText(model.getPetsize());
        holder.postcolor.setText(model.getPetcolor());
        holder.postreason.setText(model.getReason());
        ownerinfo( holder.postby,holder.posterimage,model.getUserid());

    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {

        public CircleImageView posterimage;
        public ImageView postimage;
        public Button like,adoptnme;
        public TextView postby,postname,postbreed,postage,postsize,postcolor,postreason,likecount;

        public ViewHolder(View itemView) {
            super(itemView);




            posterimage = itemView.findViewById(R.id.posterimage);
            postby = itemView.findViewById(R.id.postby);

            postimage = itemView.findViewById(R.id.postimage);
            like = itemView.findViewById(R.id.like);
            likecount = itemView.findViewById(R.id.likecount);
            adoptnme = itemView.findViewById(R.id.adoptme);
            postname = itemView.findViewById(R.id.postname);
            postbreed = itemView.findViewById(R.id.postbreed);
            postage = itemView.findViewById(R.id.postage);
            postsize = itemView.findViewById(R.id.postsize);
            postcolor = itemView.findViewById(R.id.postcolor);
            postreason = itemView.findViewById(R.id.postreason);

        }

    }

    private void ownerinfo(final TextView postby, final CircleImageView posterimage, String userid)
    {
        DatabaseReference reference = FirebaseDatabase.getInstance().getReference("User").child(userid);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                UsersHappyPaws usersHappyPaws = dataSnapshot.getValue(UsersHappyPaws.class);
                Glide.with(mContext).load(usersHappyPaws.getProfilepic()).into(posterimage);
                postby.setText(usersHappyPaws.getName());

            }

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

            }
        });

    }
}
您需要在RecyclerView上调用notifyDataSetChanged,因为您的数据是异步接收的:

@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
    ModelList.clear();
    for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
        Model model = snapshot.getValue(Model.class);
        ModelList.add(model);
    }
    recyclerView.notifyDataSetChanged();
}
至于这个错误,它只是一个警告。但是如果您担心它,可以在setLayoutManager之前先设置setAdapter,它一定触发了在没有适配器的情况下发送布局更新,因此您会看到警告