我想获取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);
}
}
我在做什么错了?
答案 0 :(得分:2)
在建立了用户列表之后,请在for
循环之外进行此操作:
adapterUsers = new AdapterUsers(getActivity(), userList);
recyclerView.setAdapter(adapterUsers);
或者,也可以在onCreate
中,将回收者视图的适配器设置为空的userList
,然后在getAllUsers()
函数的末尾,并更新新的{ {1}中的{1}},然后致电userList
答案 1 :(得分:0)
从getAllUsers()
而不是onActivityCreated()
调用方法onCreateView()
,它应适用于您的情况。