用户信息未显示在recyclerview中

时间:2020-03-30 21:47:47

标签: android firebase android-recyclerview

我正在从事这个项目,用户可以上传多个字符图像以及其他信息。例如角色名称,角色将要执行的操作,角色的颜色及其高度。现在,所有内容都成功保存在数据库中。但是,当我想使用recyclerView在用户的个人资料页面上显示角色的所有信息时,数据库中保存的信息将不会显示在用户的个人资料页面上。下面是我的代码。提前致谢 Database Structure

 //Users profile page

      @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_profile);
        setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
        overridePendingTransition(R.anim.slide_right, R.anim.slide_left);




        mUploads = new ArrayList<>();

        mAdapter = new ImageAdapter(getApplicationContext(), mUploads);


        recyclerView = findViewById(R.id.recyclerView);
        //recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        recyclerView.setAdapter(mAdapter);
        mAdapter.notifyDataSetChanged();


        if (firebaseAuth != null) {
            databaseReference = FirebaseDatabase.getInstance().getReference("Users");
            String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();


            firebaseStorage = FirebaseStorage.getInstance();
            storageReference = firebaseStorage.getReference();




            //upload = findViewById(R.id.button_upload);
            //button2 = findViewById(R.id.submit);
            //imageView = findViewById(R.id.view_image);
            //upload.setOnClickListener(this);


            databaseReference.child(uid).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {



                        String imageUrl = (String) postsnapshot.child("mImageUrl").getValue();
                        mUploads.add(imageUrl);
                        //mUploads = new ArrayList<>();


                    }


                    mAdapter.notifyDataSetChanged();


                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(ProfileActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();

                }
            });
        }

    }

   //Model Upload.class

   public class Upload {
    private String mImageUrl;

    public Upload(){
        //Empty constructor needed
    }

    public Upload (String imageUrl){
        mImageUrl=imageUrl;

    }

    public String getmImageUrl() {
        return mImageUrl;
    }

    public void setmImageUrl(String mImageUrl) {
        this.mImageUrl = mImageUrl;
    }
}


// Image adapter class

 public class ImageAdapter extends RecyclerView.Adapter<ImageAdapter.ImageViewHolder>{

    private Context mContext;
    private List<String> mUploads;

    public ImageAdapter(Context context, List<String> uploads){
        mContext = context;
        mUploads = uploads;

    }

    @NonNull
    @Override
    public ImageViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View V = LayoutInflater.from(mContext).inflate(R.layout.cardview, parent, false);
        return new ImageViewHolder(V);


    }

    @Override
    public void onBindViewHolder(@NonNull ImageViewHolder holder, int position) {
        String uploadCurrent=mUploads.get(position);
        Picasso.get().load(uploadCurrent).fit().centerCrop().into(holder.imageView);

    }

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

    }

    public class ImageViewHolder extends RecyclerView.ViewHolder{
        public ImageView imageView;

        public ImageViewHolder(@NonNull View itemView) {
            super(itemView);

            imageView=itemView.findViewById(R.id.imageview);
        }
    }
}

2 个答案:

答案 0 :(得分:0)

如果您想在孩子的孩子里读书,您需要做这样的双循环。

        databaseReference.child(uid).addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {

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

                        String imageUrl = snapshot.child("mImageUrl").getValue(String.class);
                        mUploads.add(imageUrl);
                        //mUploads = new ArrayList<>();

                    }


                }


                mAdapter.notifyDataSetChanged();


            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {
                Toast.makeText(ProfileActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();

            }
        });

编辑:

如果要全部传递它们,则需要更改一下模型类

public class Upload {
    private String mImageUrl;
    private String Character_Name;
    private String What_Character_Does;
    private String color;
    private String height;

public Upload() {
    //Empty constructor needed
}

public Upload(String imageUrl) {
    mImageUrl = imageUrl;
}

public String getmImageUrl() {
    return mImageUrl;
}

public void setmImageUrl(String mImageUrl) {
    this.mImageUrl = mImageUrl;
}

public String getCharacter_Name() {
    return Character_Name;
}

public void setCharacter_Name(String character_Name) {
    Character_Name = character_Name;
}

public String getWhat_Character_Does() {
    return What_Character_Does;
}

public void setWhat_Character_Does(String what_Character_Does) {
    What_Character_Does = what_Character_Does;
}

public String getColor() {
    return color;
}

public void setColor(String color) {
    this.color = color;
}

public String getHeight() {
    return height;
}

public void setHeight(String height) {
    this.height = height;
}

}

答案 1 :(得分:0)

更改此:

            databaseReference.child(uid).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {



                        String imageUrl = (String) postsnapshot.child("mImageUrl").getValue();
                        mUploads.add(imageUrl);
                        //mUploads = new ArrayList<>();


                    }


                    mAdapter.notifyDataSetChanged();


                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(ProfileActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();

                }
            });

对此:

            databaseReference.child(uid).addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

                    for (DataSnapshot postsnapshot : dataSnapshot.getChildren()) {



                        String imageUrl =  postsnapshot.child("mImageUrl").getValue(String.class);
                        mUploads.add(imageUrl);
                        //mUploads = new ArrayList<>();     
                        mAdapter.notifyDataSetChanged();

                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                    Toast.makeText(ProfileActivity.this, databaseError.getMessage(), Toast.LENGTH_LONG).show();

                }
            });