Получить сообщения из базы данных Firebase, используя поле в дочернем элементе - PullRequest
0 голосов
/ 06 марта 2019

изображение дерева проекта по этой ссылке

Я занимаюсь разработкой приложения для социальных сетей

В базе данных Firebase будет узел «Пользователи», «посты», «лайки»и узлы типа запроса

Узлы пользователей содержат поля, представляющие сведения о пользователях, и имеют идентификатор пользователя, подобный ключу

Под узлом постов будет находиться пост-ключ внутри него, будетсведения о сообщениях, такие как uid, profileimage, postimage, описание, дата, время, полное имя. UID в узле posts - это uid в узле Users.

Я успешно загрузил изображения в хранилище firebase, и его URL-адрес будетв поле postimage в дочернем узле

Чтобы получить сообщения определенных пользователей и отобразить их в профиле конкретного пользователя, я попробовал этот код, который я вложил в изображения

Но сообщения пользователяне отображается, и отображается только пустая активность

Можете ли вы помочь мне достичь ожидаемого результата? Я не очень хорошо знаю английский Извините, если вы не можете понять мой вопрос из-за моего плохого английского

в OnCreate,

mAuth=FirebaseAuth.getInstance();
currentUserID=mAuth.getCurrentUser().getUid();
PostsRef=FirebaseDatabase.getInstance().getReference().child("Posts");
myPostsList=(RecyclerView)findViewById(R.id.my_all_posts_list);
myPostsList.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager=new LinearLayoutManager(this);
linearLayoutManager.setReverseLayout(true);
linearLayoutManager.setStackFromEnd(true);
myPostsList.setLayoutManager(linearLayoutManager);
DisplayMyAllPosts();

в методе Displaymyallposts

private void DisplayMyAllPosts() {
    Query myPostsQuery=PostsRef.orderByChild("uid").startAt(currentUserID).endAt(currentUserID+"\uf8ff");
    FirebaseRecyclerOptions<Posts> options=new FirebaseRecyclerOptions.Builder<Posts>().setQuery(myPostsQuery,Posts.class).build();
    FirebaseRecyclerAdapter<Posts,MyPostsViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Posts, MyPostsViewHolder>(options) {
        @Override
        protected void onBindViewHolder(@NonNull MyPostsViewHolder holder, int position, @NonNull Posts model) {
            holder.fullname.setText(model.getFullname());
            holder.date.setText(model.getDate());
            holder.time.setText(model.getTime());
            holder.description.setText(model.getDescription());
            Picasso.get().load(model.getProfileimage()).into(holder.profileimage);
            Picasso.get().load(model.getPostimage()).into(holder.postImage);
        }

        @NonNull
        @Override
        public MyPostsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            View view=LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.all_posts_layout,viewGroup,false);
            MyPostsViewHolder viewHolder=new MyPostsViewHolder(view);
            return viewHolder;
        }
    };
   myPostsList.setAdapter(firebaseRecyclerAdapter);
}

public static class MyPostsViewHolder extends RecyclerView.ViewHolder{
    TextView fullname,date,time,description;
    CircleImageView profileimage;
    ImageView postImage;
    public MyPostsViewHolder(@NonNull View itemView) {
        super(itemView);

        fullname=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);
        profileimage=itemView.findViewById(R.id.post_profile_image);
        postImage=itemView.findViewById(R.id.post_image);
    }
}

1 Ответ

0 голосов
/ 08 марта 2019

Пост получен это из-за моих глупых ошибок Я забыл дать стартлистинг Вот причина, по которой не удалось получить пост Но есть другая проблема Кроме изображения отображаются все остальные поля Но не изображение Изображение все еще пустое

...