Firestore数据库文档未在RecyclerView中显示

问题描述 投票:0回答:1

我正在尝试在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;
}

}

数据库结构

Groups Database Structure

android firebase google-cloud-firestore recycler-adapter android-adapter
1个回答
-1
投票

几个想法要继续

1)Firestore区分大小写,您是否检查数据库中的“成员和组”相同?

2)数据实际上进入您的应用程序了吗?在进入适配器之前,“选项”的值是什么?

© www.soinside.com 2019 - 2024. All rights reserved.