【问题标题】:Why does the friend list in my Java program not display?为什么我的 Java 程序中的好友列表不显示?
【发布时间】:2019-06-29 19:44:06
【问题描述】:

好友列表片段

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 数据库结构图:

enter image description here

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

【问题讨论】:

  • 欢迎来到 Stack Overflow!请拨打tour 并访问我们的help center 以了解有关本网站主题的哪些问题。如果您可以edit您的问题使其成为主题,请这样做。
  • @JoeC:这是很好的一般性建议,但可能值得指出的是,在每种情况下,您认为哪条指南没有被遵守,所以问题作者知道要解决什么问题。例如,这是太宽泛还是缺少minimal reproducible example

标签: java android android-studio android-fragments


【解决方案1】:

您没有为 RecyclerView 设置适配器。

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

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

mFriendList.setAdapter(friendsRecyclerViewAdapter);

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

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

【讨论】:

  • 感谢您的帮助,但它对我不起作用,应用程序不断崩溃。 :(
  • 错误是什么?请在底部的 logcat 窗口中发布您可以找到的错误。
  • @PaPankaj Sati ,这里出现的一个错误是:E/memtrack:无法加载 memtrack 模块和 E/RecyclerView:未连接适配器;跳过布局,我一直在尝试,但没有任何效果。 :(
  • 什么时候在活动中没问题,但是当它在片段中时,它不起作用,我找不到原因:(
  • 您好,问题已经解决了,非常感谢您的宝贵时间:)
猜你喜欢
  • 1970-01-01
  • 2021-10-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-19
相关资源
最近更新 更多