使用 FirestoreRecyclerAdapter 但无法从 Firebase 查询任何数据

Using FirestoreRecyclerAdapter but cannot query any data from Firebase

根据 https://github.com/firebase/FirebaseUI-Android/tree/master/firestore 中的指南,我使用 FirestoreRecyclerAdapter 创建了一个列表项,但我不知道为什么无法检索任何数据。事实上,数字视图项目显示正确,但内容始终为空。任何人都可以帮助我。以下是源代码:

Activity:

public class MainActivity extends AppCompatActivity
    implements NavigationView.OnNavigationItemSelectedListener {

private FirebaseFirestore mDatabase;
private ViewPager mViewPager;

private CollectionReference mOrderRef;
private OrderAdapter mOrderAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.fragment_order_list);

    mDatabase = FirebaseFirestore.getInstance();
    mOrderRef = mDatabase.collection("order");
    Query query = mOrderRef.limit(1000);
    FirestoreRecyclerOptions<OrderInfo> options = new FirestoreRecyclerOptions.Builder<OrderInfo>().setQuery(query, OrderInfo.class).build();
    mOrderAdapter = new OrderAdapter(options);

    RecyclerView recyclerView = (RecyclerView)findViewById(R.id.recycler_view_order_list);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(mOrderAdapter);
}

@Override
protected void onStart() {
    super.onStart();
    mOrderAdapter.startListening();
}

@Override
protected void onStop() {
    super.onStop();
    mOrderAdapter.stopListening();
}

适配器:

    public class OrderAdapter extends FirestoreRecyclerAdapter<OrderInfo, OrderAdapter.OrderHolder> {

    /**
     * Create a new RecyclerView adapter that listens to a Firestore Query.  See {@link
     * FirestoreRecyclerOptions} for configuration options.
     *
     * @param options
     */
    public OrderAdapter(@NonNull FirestoreRecyclerOptions<OrderInfo> options) {
        super(options);
    }

    @Override
    protected void onBindViewHolder(@NonNull OrderHolder holder, int position, @NonNull OrderInfo model) {
        holder.txtTitle.setText(String.valueOf(model.getTitle()));
        holder.txtCusName.setText(String.valueOf(model.getCusName()));
        holder.txtDate.setText(String.valueOf(model.getDate()));
    }

    @NonNull
    @Override
    public OrderHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.order_item, parent, false);
        return new OrderHolder(view);
    }


    class OrderHolder extends RecyclerView.ViewHolder{
        TextView txtCusName;
        TextView txtTitle;
        TextView txtDate;

        public OrderHolder(@NonNull View itemView) {
            super(itemView);
            txtCusName = itemView.findViewById(R.id.txt_customer_name);
            txtTitle = itemView.findViewById(R.id.txt_title);
            txtDate = itemView.findViewById(R.id.txt_date);
        }
    }
}

数据模型:

    public class OrderInfo {

    private String mTitle;
    private String mCusName;
    private String mDate;

    public OrderInfo(){
        //default constructor
    }

    public OrderInfo(String title, String name, String date) {
        this.mTitle = title;
        this.mCusName = name;
        this.mDate = date;
    }

    public String getTitle() {
        return mTitle;
    }

    public String getCusName() {
        return mCusName;
    }

    public void setCusName(String cusName) {
        this.mCusName = cusName;
    }
    public String getDate() {
        return mDate;
    }
}

我的数据库结构:

您的数据模型与数据库结构不一致。尝试像下面这样更新它:

public class OrderInfo {

    private String title;
    private String name;
    private String date;

    public OrderInfo(){
        //default constructor
    }

    public OrderInfo(String title, String name, String date) {
        this.title = title;
        this.name = name;
        this.date = date;
    }

    public String getTitle() {
        return title;
    }

    public String getName() {
        return name;
    }

    public String getDate() {
        return date;
    }
}

此外,不要忘记将您的项目与 firebase firestore 同步。