E / RecyclerView错误:未连接适配器;跳过布局

时间:2020-01-22 02:58:25

标签: java android firebase kotlin

我想获取UserFragment中已注册用户的列表,实际上这是我的代码,但是当我转到“用户”选项卡时,出现错误: E / RecyclerView:未连接适配器;跳过布局

UsersFragment.java

public class UsersFragment extends Fragment {


RecyclerView recyclerView;
AdapterUsers adapterUsers;
List<ModelUser> userList;

FirebaseAuth firebaseAuth;

public UsersFragment() {
}


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

    View view = inflater.inflate(R.layout.fragment_users, container, false);

    firebaseAuth = FirebaseAuth.getInstance();

    recyclerView = view.findViewById(R.id.users_recyclerView);

    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    userList = new ArrayList<>();

    getAllUsers();

    return view;
}

private void getAllUsers() {
    final FirebaseUser fUser = FirebaseAuth.getInstance().getCurrentUser();
    DatabaseReference ref = FirebaseDatabase.getInstance().getReference("users");
    ref.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            userList.clear();
            for (DataSnapshot ds: dataSnapshot.getChildren()){
                ModelUser modelUser = ds.getValue(ModelUser.class);

                if (!modelUser.getUid().equals(fUser.getUid())){
                    userList.add(modelUser);
                }

                adapterUsers = new AdapterUsers(getActivity(), userList);
                recyclerView.setAdapter(adapterUsers);

            }

        }

我在做什么错了?

2 个答案:

答案 0 :(得分:2)

在建立了用户列表之后,请在for循环之外进行此操作:

adapterUsers = new AdapterUsers(getActivity(), userList);
recyclerView.setAdapter(adapterUsers);

或者,也可以在onCreate中,将回收者视图的适配器设置为空的userList,然后在getAllUsers()函数的末尾,并更新新的{ {1}中的{1}},然后致电userList

答案 1 :(得分:0)

getAllUsers()而不是onActivityCreated()调用方法onCreateView(),它应适用于您的情况。