如何在 fragment 中显示回收视图中的所有用户帖子

问题描述 投票:0回答:1

我无法在主页片段的回收视图中显示所有用户帖子,这是我的代码。当我打开 MainPageFragment 时,它只显示我的帖子而不显示其他用户的帖子。任何人都请帮助我......

MainPageFragment

public class MainPageFragment extends Fragment {
    public static TextView tv_count_friend;
    ArrayList<Post> lsPost;
    RecyclerView rvlPost;
    //JOURNAL
    TextView tvOurJournal;
    private String imageAva;
    Toolbar toolbar;
    View topBar;
    private DrawerLayout drawerLayout;
    ImageView imgAvatarUser_toolbar;
    NavigationView navigationView;
    BottomNavigationView menubottom;
    private FirebaseUser user;
    private DatabaseReference reference;
    private String userID;
    FirebaseDatabase database;
    View view;
    PostAdapter postAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        view=inflater.inflate(R.layout.fragment_main_page, container, false);
        database=FirebaseDatabase.getInstance();
        toolbar=view.findViewById(R.id.toolbar);
        imgAvatarUser_toolbar = view.findViewById(R.id.imgUser);
        drawerLayout=view.findViewById(R.id.trangchu);
        tvOurJournal=view.findViewById(R.id.tvOurJournal);
        topBar=view.findViewById(R.id.vTopBar);
        menubottom = view.findViewById(R.id.navMenu);
        navigationView = view.findViewById(R.id.drawerView);
        //FIREBASE
        user = FirebaseAuth.getInstance().getCurrentUser();
        reference = FirebaseDatabase.getInstance().getReference("Users");
        userID = user.getUid();
        //  INFORMATION
        final TextView user_name = (TextView) view.findViewById(R.id.tvUserName_drawermenu);
        initMenu();
        ClickButtonDrawerMenu();
        updateNavHeader();
        lsPost=new ArrayList<>();
        rvlPost=view.findViewById(R.id.rvPost);
        postAdapter=new PostAdapter(lsPost);
        LoadData();
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext());
        rvlPost.setAdapter(postAdapter);
        rvlPost.setLayoutManager(linearLayoutManager);
        menubottom.setOnItemSelectedListener(getListener());
        //JOURNAL
        String text = "<font color =#000000>J</font><font color =#71C2CA>o</font><font color=#A5CDA7>u</font><font color=#E8DB7B>r</font><font color=#000000>nal</font>";
        tvOurJournal.setText(Html.fromHtml(text,Html.FROM_HTML_MODE_LEGACY));

        LayoutInflater layoutInflater=LayoutInflater.from(getContext());
        tv_count_friend=(TextView) layoutInflater.inflate(R.layout.counter_friend,null);
        navigationView.getMenu().findItem(R.id.nav_FriendsRequests).setActionView(tv_count_friend);
        ShowCounter();
        return view;
    }
    void initMenu()
    {
        imgAvatarUser_toolbar.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(drawerLayout.isDrawerOpen(GravityCompat.END)){
                    drawerLayout.closeDrawer(GravityCompat.END);
                }
                drawerLayout.openDrawer(GravityCompat.END);

            }
        });
    }
    void LoadFragment(Fragment fmNew){
        setVisibility();
        FragmentTransaction fragmentTransaction=getActivity().getSupportFragmentManager().beginTransaction();
        fragmentTransaction.replace(R.id.trangchinh, fmNew);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
        drawerLayout.closeDrawer(GravityCompat.END);
    }
    void setVisibility()
    {
        imgAvatarUser_toolbar.setVisibility(View.INVISIBLE);
        tvOurJournal.setVisibility(View.INVISIBLE);
        topBar.setVisibility(View.INVISIBLE);
        rvlPost.setVisibility(View.INVISIBLE);
    }
    private NavigationBarView.OnItemSelectedListener getListener(){
        return (new NavigationBarView.OnItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()){
                    case R.id.mnHome:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_self);
                        break;
                    case R.id.mnAdd:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_postingFragment);
                        break;
                    case R.id.mnSearch:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_searchFragment);
                }
                return false;
            }
        });
    }
    void setVisibility_Bottom()
    {
        imgAvatarUser_toolbar.setVisibility(View.INVISIBLE);
        tvOurJournal.setVisibility(View.INVISIBLE);
        topBar.setVisibility(View.INVISIBLE);
        rvlPost.setVisibility(View.INVISIBLE);
    }
    void ClickButtonDrawerMenu()
    {
        navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch(item.getItemId())
                {
                    case R.id.nav_Friends:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_friendFragment);
                        break;
                    case R.id.nav_FriendsRequests:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_friendRequestFragment);
                        break;
                    case R.id.nav_UserPage:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_userpageFragment);
                        break;
                    case R.id.nav_Logout:
                        SharedPreferences preferences = getActivity().getSharedPreferences("checkbox", Context.MODE_PRIVATE);
                        SharedPreferences.Editor editor = preferences.edit();
                        editor.putString("remember","false");
                        editor.apply();
                        Intent i=new Intent(getActivity(),LoginActivity.class);
                        startActivity(i);
                        break;
                    case R.id.nav_Map:
                        Intent intent=new Intent(getActivity(),MapActivity.class);
                        startActivity(intent);
                        break;
                    case R.id.nav_Setting:
                        Navigation.findNavController(view).navigate(R.id.action_mainPageFragment_to_settingFragment);
                        break;
                }
                return false;
            }
        });
    }
    public void updateNavHeader()
    {
        NavigationView navigationview = (NavigationView) view.findViewById(R.id.drawerView);
        View headerview = navigationview.getHeaderView(0);
        reference.child(user.getUid()).addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                HelperClass userProfile = snapshot.getValue(HelperClass.class);
                ImageView navUserPhoto = headerview.findViewById(R.id.imgAvatar_drawermenu);
                TextView navUsername = headerview.findViewById(R.id.tvUserName_drawermenu);
                imageAva= userProfile.image;
                //SHOW
                navUsername.setText(userProfile.fullname);
                //GLIDE SHOW AVATAR
                if(!imageAva.isEmpty())
                {
                    Picasso.get().load(imageAva).placeholder(R.drawable.account_circle).into(navUserPhoto);
                }
            }
            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });
    }
    public void ShowCounter()
    {
        FirebaseFirestore db=FirebaseFirestore.getInstance();
        db.collection("FriendReceive").document(userID).collection("FriendRequest").get()
                .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                    @Override
                    public void onComplete(@NonNull Task<QuerySnapshot> task) {
                        for(DocumentSnapshot snapshot:task.getResult())
                        {
                            int count=0;
                            count = task.getResult().size();
                            if(count>0)
                            {
                                tv_count_friend.setText(Integer.toString(count));
                            }
                            else {
                                tv_count_friend.setText("");
                                
                            }
                        }
                    }
                });
    }
    private void LoadData()
    {
        reference=database.getReference("Posts").child(userID);
        reference.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                for(DataSnapshot dataSnapshot:snapshot.getChildren()){
                    Post post=dataSnapshot.getValue(Post.class);
                    lsPost.add(post);
                }
                postAdapter.notifyDataSetChanged();
            }

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

            }
        });

    }

}

PostAdapter

public class PostAdapter extends RecyclerView.Adapter<PostAdapter.PostListViewHolder> {
    public PostAdapter(ArrayList<Post> lsPost) {
        this.lsPost = lsPost;
    }
    DatabaseReference databaseReference;
    FirebaseUser user;
    FirebaseFirestore db;
    ArrayList<Post> lsPost;
    Context context;
    PostCallBack postCallBack;
    @NonNull
    @Override
    public PostAdapter.PostListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        context=parent.getContext();
        LayoutInflater inflater=LayoutInflater.from(context);
        View view=inflater.inflate(R.layout.layout_post_item,parent,false);
        PostListViewHolder postListViewHolder=new PostListViewHolder(view);
        return postListViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull PostAdapter.PostListViewHolder holder, int position) {
        Post item=lsPost.get(position);
        holder.tvUserName.setText(item.getUserName());
        holder.tvCaption.setText(item.getCaption());
        Picasso.get().load(item.getImage()).into(holder.PostImage);
        //Glide.with(Context).load(item).ge
        //
        String uid = lsPost.get(position).getUserId();
        String username = lsPost.get(position).getUserName();
    }

    @Override
    public int getItemCount() {
        return lsPost.size();
    }
    public class PostListViewHolder extends RecyclerView.ViewHolder{
        ImageView imgAvatar;
        TextView tvUserName;
        TextView tvCaption;
        ImageView PostImage;
        public PostListViewHolder(@NonNull View itemView) {
            super(itemView);
            imgAvatar=itemView.findViewById(R.id.imageAvatar);
            tvCaption=itemView.findViewById(R.id.tvCaption);
            tvUserName=itemView.findViewById(R.id.tvUsername);
            PostImage=itemView.findViewById(R.id.ivPostImage);
        }
    }
    public interface PostCallBack
    {

    }
}

我尝试删除 MainPageFragment、LoadData 中的 child.(userid),但它在 mainpageFragment 上什么也没显示

java android firebase-realtime-database mobile android-recyclerview
1个回答
0
投票

你必须明白你正在尝试获取列表列表,你的代码正在做你定义的事情,你只是得到了你的用户 userID 的引用,我没有测试但试试这个;

reference=database.getReference("Posts");
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot snapshot) {
            for(DataSnapshot userPosts:snapshot.getChildren()){
                for(DataSnapshot posts : userPosts.getChildren()){
                   Post p = post.getvalue(Post.class);
                   lsPost.add(p);
                }
            }
            postAdapter.notifyDataSetChanged();
        }

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

        }
    });
© www.soinside.com 2019 - 2024. All rights reserved.