我无法在主页片段的回收视图中显示所有用户帖子,这是我的代码。当我打开 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) {
}
});
}
}
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 上什么也没显示
你必须明白你正在尝试获取列表列表,你的代码正在做你定义的事情,你只是得到了你的用户 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) {
}
});