微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Firebase Recycler View首先显示空白页面,但在关闭手机电源并打开后再完美显示数据,没有错误

如何解决Firebase Recycler View首先显示空白页面,但在关闭手机电源并打开后再完美显示数据,没有错误

我正在使用Firebase实施创建应用。现在,我不得不使用recyclerView显示数据列表。使用我的代码后,我的活动为空,Logcat中没有任何错误,但是当关闭移动电源按钮并再次启动时,数据将显示在recycleView上。当我进行另一项活动并打开此活动然后再次显示空白页面时,也是一件事情。我需要某人的帮助:(

这是我的片段:

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

    // Initialize
    recyclerView = view.findViewById(R.id.recycleView);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new linearlayoutmanager(getContext()));
    list = new ArrayList<>();

          
    // For retrieve Chat User ID
    databaseReference = FirebaseDatabase.getInstance().getReference().child("Chat");
    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            list.clear();
            for (DataSnapshot ds : snapshot.getChildren()) {
                receiveID = ds.getKey();

                // Restore Data on model class name UserDataInfo
                databaseReference = FirebaseDatabase.getInstance().getReference().child("UsersData").child(receiveID);
                databaseReference.addValueEventListener(new ValueEventListener() {
                    @Override
                    public void onDataChange(@NonNull DataSnapshot snapshot) {
                        String userName = String.valueOf(snapshot.child("userName").getValue());
                        String userNumber = String.valueOf(snapshot.child("userPhone").getValue());
                        String userType = String.valueOf(snapshot.child("userType").getValue());
                        String userImage = String.valueOf(snapshot.child("userName").getValue());

                        info = new UserDataInfo(userImage,userType,userNumber,userName,receiveID);
                        list.add(info);
                    }

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

                    }
                });

                // End
            }

        }

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

        }
    });     
    adapter = new messagelistadapter(list,getContext());
    recyclerView.setAdapter(adapter);
}

我的适配器:

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

List<UserDataInfo> infoList;
Context context;

public messagelistadapter(List<UserDataInfo> infoList,Context context) {
    this.infoList = infoList;
    this.context = context;
}

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

@Override
public void onBindViewHolder(@NonNull messagelistadapter.ViewHolder holder,int position) {
    final UserDataInfo userDataInfo = infoList.get(position);
    holder.Name.setText(userDataInfo.getUserName());
    holder.Number.setText(userDataInfo.getUserPhone());
    holder.whichType.setText(userDataInfo.getUserType());

    holder.linearLayout.setonClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(context,"ID: " + userDataInfo.getReceiveID(),Toast.LENGTH_SHORT).show();
        }
    });
}

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

public class ViewHolder extends RecyclerView.ViewHolder{

    ImageView Image;
    TextView Name,Number,whichType;
    LinearLayout linearLayout;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        Image = itemView.findViewById(R.id.UserImage);
        Name = itemView.findViewById(R.id.Name);
        Number = itemView.findViewById(R.id.Number);
        whichType = itemView.findViewById(R.id.WhichType);
        linearLayout = itemView.findViewById(R.id.Linear_layout);
    }
}
}

我的Firebase数据库设置:

Database image

Database image

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。