首页 > 解决方案 > 为什么我的 Java 程序中的好友列表不显示?

问题描述

好友列表片段

public class FriendsFragment extends Fragment {


private RecyclerView mFriendList;

private DatabaseReference mFriendsDatabase;

private FirebaseAuth mAuth;

private String mCurrent_user_id;

private View mMainView;

private String user_id;

public FriendsFragment() {
    // Required empty public constructor
}


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

   mMainView = inflater.inflate(R.layout.fragment_friends, container, false);

   mFriendList = (RecyclerView) mMainView.findViewById(R.id.listfriends);
   mCurrent_user_id = mAuth.getCurrentUser().getUid();

//小路

   mFriendsDatabase = FirebaseDatabase.getInstance().getReference().child("Friends").child(mCurrent_user_id);

// 回收站视图

   mFriendList.setHasFixedSize(true);
   mFriendList.setLayoutManager(new LinearLayoutManager(getContext()));

// 返回主视图

   return mMainView;


}

// 开始时

@Override
public void onStart() {
    super.onStart();
    FirebaseRecyclerOptions<Friends> options =
            new FirebaseRecyclerOptions.Builder<Friends>()
                    .setQuery(mFriendsDatabase,Friends.class)
                    .setLifecycleOwner(this)
                    .build();

    FirebaseRecyclerAdapter<Friends, FriendsViewHolder> friendsRecyclerViewAdapter = new FirebaseRecyclerAdapter<Friends, FriendsViewHolder>(options){

        @NonNull
        @Override
        public FriendsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
            return new FriendsViewHolder(LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.friendlist, viewGroup, false));
        }

        @Override
        protected void onBindViewHolder(@NonNull FriendsViewHolder holder, int position, @NonNull Friends model) {

            holder.setDate(model.getDate());

            //Will get data from user choosen
            //final String user_id = getRef(position).getKey();

        }
    };

    mFriendList.setAdapter(friendsRecyclerViewAdapter);

}

// onStart方法结束

public static class FriendsViewHolder extends RecyclerView.ViewHolder{

    View mView;

    public FriendsViewHolder(@NonNull View itemView) {
        super(itemView);

        mView = itemView;
    }

    public void setDate(String date){
        TextView dateOfFriend=(TextView) mView.findViewById(R.id.friend_single_status);
        dateOfFriend.setText(date);
    }

}
}

// 我去的好友类获取字符串数据

public class Friends {

public String date;

public Friends(){

}

public Friends(String date) {
    this.date = date;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}
}

Firebase 数据库结构图:

在此处输入图像描述

我不知道是什么问题。我是安卓新手。

标签: javaandroidandroid-studioandroid-fragments

解决方案


您没有为 RecyclerView 设置适配器。

mRV.setLayoutManager(new LinearLayoutManager(getContext()); 
mRV.setAdapter(new MyAdapterRV());

您的 onStart() 方法中有一个适配器。使其成为全局即公共并在 onCreateView() 中添加该行

mFriendList.setAdapter(friendsRecyclerViewAdapter);

更多关于 Recycler Views: 在 Android 中,如果你想显示一个长列表,你可以使用 recycler view。RecyclerView 将膨胀(创建)子视图并管理列表的上下滚动。回收站视图需要 4 件事:

  1. 来自布局文件的引用
  2. 一个布局管理器,告诉它如何显示子视图(您的代码使用一个 LinearLayoutManager,它将在垂直列表中显示每个项目的下方)
  3. 一个适配器,可以获取实际数据(您的朋友列表)并将其分配(绑定)到 RecyclerView 内的子视图
  4. 一个 ViewHolder 类,它将存储每个子视图的引用

推荐阅读