Я пытаюсь отобразить документы из моей базы данных Firestore в элементах CardView в RecyclerView. Я последовал руководству по этому поводу, настроил адаптер и все такое. Однако, когда я запускаю приложение, на экране не отображаются никакие элементы. Я реализую его во фрагменте, а не в действии, но не уверен, почему это имеет значение. Может ли кто-нибудь увидеть, где я ошибся? В базе данных определенно есть данные, которые должны появиться
Код фрагмента
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);
}
}
}
Групповой класс
public class Group {
private String id;
public Group() {
//Empty constructor needed
}
public Group(String id) {
this.id = id;
}
@PropertyName("id")
public String getId() {
return id;
}
}
Структура базы данных
![Groups Database Structure](https://i.stack.imgur.com/4a8cb.png)
Работающий запрос
database.collection("groups")
.whereEqualTo("members", mainActivity.UID)
.get()
.addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if (task.isSuccessful()) {
for (QueryDocumentSnapshot document : task.getResult()) {
Log.d("RESULT", document.getId() + " => " + document.getData());
}
}
else {
Log.d("FAIL", "Error getting documents: ", task.getException());
}
}
});