Информация о пользователях не отображается в программе - PullRequest
0 голосов
/ 31 марта 2020

Я работаю над этим проектом, где пользователи могут загружать более одного изображения персонажа вместе с другой информацией. Например, имя персонажа, что он будет делать, цвет персонажа и его рост. Теперь все успешно сохраняется в базе данных. Однако, когда я хочу отобразить всю информацию о персонаже на странице профиля пользователя, используя 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 голосов
/ 31 марта 2020

Измените это:

            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();

                }
            });
0 голосов
/ 31 марта 2020

Если вы хотите читать внутри детей детей, вам нужно сделать двойной l oop, как это.

        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;
}

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...