Я хочу обновить фотографию профиля пользователя во всех сообщениях, а также, когда он обновлял пользователя - PullRequest
0 голосов
/ 24 мая 2019

введите описание изображения здесь enter image description here Я обновляю фотографию профиля пользователя, и она отлично работает во всех видах деятельности, которые я хочу.Но проблема в том, что он не обновляет фотографию профиля пользователя во всех сообщениях, которые уже были размещены пользователем.Я также хочу обновить изображение профиля пользователя.

Это база данных. Ссылка

postRef= FirebaseDatabase.getInstance().getReference().child("posts");

Вот мои настройки просмотра Recycler

FirebaseRecyclerOptions<Posts> options=new FirebaseRecyclerOptions.Builder<Posts>()
            .setQuery(postRef,Posts.class)
            .build();

    FirebaseRecyclerAdapter<Posts,PostsViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Posts, PostsViewHolder>(options)
    {
        @Override
        protected void onBindViewHolder(@NonNull final PostsViewHolder holder, int position, @NonNull final Posts model) {

            final String postKey=getRef(position).getKey();

            holder.itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent clickPostIntent=new Intent(MainActivity.this, ClickPostActivity.class);
                    clickPostIntent.putExtra("postKey",postKey);
                    startActivity(clickPostIntent);
                }
            });

            holder.username.setText(model.getFullname());
            holder.date.setText(model.getDate());
            holder.time.setText(model.getTime());

            if (model.getPost_uri_link()!=null){
                holder.post_link.setText(model.getPost_uri_link());
            }
            else {
                holder.post_link.setVisibility(View.GONE);
            }
            if (model.getPost_file_name()!=null && model.getPost_file_uri()!=null) {
                holder.file_attach_name.setText(model.getPost_file_name());
                holder.file_attach_name.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        downloadFile(MainActivity.this,model.getPost_file_name(),"gs://studentcornerproject-be4c6.appspot.com/post files",model.getPost_file_uri());
                    }
                });
            }
            else{
                holder.file_attach_name.setVisibility(View.GONE);
            }

            if (model.getDescription()!=null) {
                holder.description.setText(model.getDescription());
           }
            else {
                holder.description.setVisibility(View.GONE);
            }

            if (model.getPost_img()!=null) {
                Picasso.get().load(model.post_img).networkPolicy(NetworkPolicy.OFFLINE).placeholder(android.R.drawable.progress_indeterminate_horizontal).into(holder.post_img, new Callback() {
                    @Override
                    public void onSuccess() {

                        postRef.child("post_img").keepSynced(true);
                    }

                    @Override
                    public void onError(Exception e) {

                        Picasso.get().load(model.post_img).into(holder.post_img);
                    }
                });
            }
            else {
                holder.post_img.setVisibility(View.GONE);
            }
            Picasso.get().load(model.getProfile_image()).networkPolicy(NetworkPolicy.OFFLINE).placeholder(R.drawable.profile_icon).into(holder.prof_img, new Callback() {
                @Override
                public void onSuccess() {

                }

                @Override
                public void onError(Exception e) {

                    Picasso.get().load(model.getProfile_image()).into(holder.prof_img);
                }
            });
        }

        @NonNull
        @Override
        public PostsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {

            View view= LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.all_posts_users,viewGroup,false);
            PostsViewHolder viewHolder=new PostsViewHolder(view);
            return viewHolder;

        }
    };
    postslist.setAdapter(firebaseRecyclerAdapter);
    firebaseRecyclerAdapter.startListening();
}

public static class PostsViewHolder extends RecyclerView.ViewHolder
{

   TextView username,date,time,description,file_attach_name,post_link;
    CircleImageView prof_img;
    ImageView post_img;

    public PostsViewHolder(@NonNull View itemView) {
        super(itemView);
        post_link=itemView.findViewById(R.id.post_link);
        username=itemView.findViewById(R.id.post_user_name);
        date=itemView.findViewById(R.id.post_date);
        time=itemView.findViewById(R.id.post_time);
        description=itemView.findViewById(R.id.post_description);
        file_attach_name=itemView.findViewById(R.id.post_filename);
        prof_img=itemView.findViewById(R.id.post_profile_img);
        post_img=itemView.findViewById(R.id.post_image);


    }

Я хочу обновить профильфотография во всех постах, которые он уже опубликовал.

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Моя проблема была решена.вот правильный код.

 Query postQuery=postRef.orderByChild("uid").equalTo(currentUserId);
        postQuery.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                for (DataSnapshot snapshot:dataSnapshot.getChildren()){
                    Log.i("Post",snapshot.getKey());
                    postRef.child(snapshot.getKey()).child("profile_image").setValue(profile_img);
                    postRef.child(snapshot.getKey()).child("fullname").setValue(fullname);




                }
            }

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

            }
        });
0 голосов
/ 24 мая 2019

Внутри вашего узла userID вы должны хранить идентификаторы поста этого пользователя, после чего вы можете просто изменить photo_url всех постов, которые сделал пользователь.

Пример

Users
|______UserID
       |_ userPosts
         |_ postID

Затем, когда вы изменяете photo_url пользователя, вы можете получить все сообщения и изменить тот же photo_url

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