我正在尝试在RecyclerView的CardView项目上显示来自Firestore数据库的文档。我遵循了关于此的教程,并设置了适配器和所有东西。但是,当我启动该应用程序时,屏幕上没有任何项目出现。我是在一个Fragment中实现它,而不是在Activity中实现它,但不确定为什么会有所作为。谁能看到我哪里出问题了?数据库中肯定有应该显示的数据
片段代码
public class GroupsFragment extends Fragment {
//Declare the database object
private FirebaseFirestore database;
CollectionReference reference;
private MainActivity mainActivity;
private GroupAdapter adapter;
private RecyclerView rcGroups;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
mainActivity = (MainActivity) getActivity();
database = mainActivity.database;
View view = inflater.inflate(R.layout.fragment_groups, container, false);
rcGroups = view.findViewById(R.id.rcGroups);
reference = database.collection("Groups");
setUpRecyclerView();
return inflater.inflate(R.layout.fragment_groups, container, false);
}
private void setUpRecyclerView() {
Query query = reference.whereEqualTo("Members", mainActivity.UID);
FirestoreRecyclerOptions<Group> options = new FirestoreRecyclerOptions.Builder<Group>()
.setQuery(query, Group.class)
.build();
adapter = new GroupAdapter(options);
rcGroups.setHasFixedSize(true);
rcGroups.setLayoutManager(new LinearLayoutManager(getContext()));
rcGroups.setAdapter(adapter);
}
@Override
public void onStart() {
super.onStart();
adapter.startListening();
}
@Override
public void onStop() {
super.onStop();
adapter.stopListening();
}
}
适配器代码
public class GroupAdapter extends FirestoreRecyclerAdapter<Group, GroupAdapter.GroupHolder> {
/**
* Create a new RecyclerView adapter that listens to a Firestore Query. See {@link
* FirestoreRecyclerOptions} for configuration options.
*
* @param options
*/
public GroupAdapter(@NonNull FirestoreRecyclerOptions<Group> options) {
super(options);
}
@Override
protected void onBindViewHolder(@NonNull GroupHolder holder, int position, @NonNull Group model) {
holder.txtID.setText(model.getID());
}
@NonNull
@Override
public GroupHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.group_item,
parent, false);
return new GroupHolder(v);
}
class GroupHolder extends RecyclerView.ViewHolder {
TextView txtID;
public GroupHolder(@NonNull View itemView) {
super(itemView);
txtID = itemView.findViewById(R.id.txtID);
}
}
}
Group Class
public class Group {
private String ID;
public Group() {
//Empty constructor needed
}
public Group(String ID) {
this.ID = ID;
}
public String getID() {
return ID;
}
}
数据库结构
几个想法要继续
1)Firestore区分大小写,您是否检查数据库中的“成员和组”相同?
2)数据实际上进入您的应用程序了吗?在进入适配器之前,“选项”的值是什么?