Android FirestoreRecyclerAdapter未更新视图

Android FirestoreRecyclerAdapter未更新视图,android,google-cloud-firestore,Android,Google Cloud Firestore,我正在使用FirestoreRecyclerAdapter,面临着这个问题 Query query = db .collection(SOME_COLLECTION) .whereEqualTo("key", key) .orderBy("dueDate"); 如果我把orderBy放在第一次加载的数据中。实时更新不起作用。我尝

我正在使用FirestoreRecyclerAdapter,面临着这个问题

                Query query = db
                .collection(SOME_COLLECTION)
                .whereEqualTo("key", key)                    
                .orderBy("dueDate");
如果我把orderBy放在第一次加载的数据中。实时更新不起作用。我尝试将orderBy放在末尾,以及更改排序字段

如果我删除orderBy,一切都会正常工作。但没有命令

根据文件规定,在不使用范围比较的情况下,它应该起作用。有什么想法吗

更新。下面是适配器选项

             FirestoreRecyclerOptions<Payment> options = 
             new  FirestoreRecyclerOptions.Builder<Payment>()
            .setQuery(query, Payment.class)
            .build();
这是付款单

class PaymentHolder extends RecyclerView.ViewHolder {

private TextView pDate, pAmount;
private CheckBox pDone;

PaymentHolder(View itemView) {
    super(itemView);

    pDate = itemView.findViewById(R.id.pDate);
    pAmount = itemView.findViewById(R.id.pAmount);
    pDone = itemView.findViewById(R.id.checkBox);


}}
这是适配器

firestoreRecyclerAdapter = new FirestoreRecyclerAdapter<Payment, PaymentHolder>(options) {


        @Override
        protected void onBindViewHolder(final PaymentHolder paymentHolder, final int position, final Payment payment) {

            final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);

            final String id = getSnapshots().getSnapshot(position).getId();

            paymentHolder.getpDate().setText(dateFormat.format(payment.getDueDate()));
            paymentHolder.getpAmount().setText(getAmount(payment.getAmount()));
            paymentHolder.getpDone().setChecked(payment.isPaid());


        }


        @Override
        public PaymentHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

            View view = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.payment_item, viewGroup, false);

            final PaymentHolder paymentHolder = new PaymentHolder(view);

            return paymentHolder;
        }
    };

    recyclerView.setAdapter(firestoreRecyclerAdapter);
firestoreRecyclerAdapter=新的firestoreRecyclerAdapter(选项){
@凌驾
受保护的BindViewHolder无效(最终付款持有人付款持有人、最终整数位置、最终付款){
final DateFormat DateFormat=DateFormat.getDateInstance(DateFormat.MEDIUM);
最终字符串id=getSnapshots().getSnapshot(位置).getId();
paymentHolder.getpDate().setText(dateFormat.format(payment.getDueDate());
paymentHolder.getpAmount().setText(getAmount(payment.getAmount());
paymentHolder.getpDone().setChecked(payment.isPaid());
}
@凌驾
public PaymentHolder onCreateViewHolder(视图组视图组,int i){
View=LayoutFlater.from(viewGroup.getContext())
.充气(R.layout.payment_项目、视图组、false);
最终付款持有人付款持有人=新付款持有人(视图);
报酬持有人;
}
};
recyclerView.setAdapter(firestoreRecyclerAdapter);

所有设置都基于示例,没有什么特别之处。

正如弗兰克所说,您应该创建索引。如果您更精确地查看日志,就会看到一个警告和一个创建索引的链接。只要点击链接就可以了。老大哥为你创建了正确的索引。谢谢你,弗兰克。

你共享的代码对
FirestoreRecyclerAdapter
没有任何作用。如果没有看到(阅读链接,它非常有用),很难判断出哪里出了问题。您是否在这些字段的组合上定义了索引?如果没有,您应该在日志中得到一个关于退出的非常明确的警告。
firestoreRecyclerAdapter = new FirestoreRecyclerAdapter<Payment, PaymentHolder>(options) {


        @Override
        protected void onBindViewHolder(final PaymentHolder paymentHolder, final int position, final Payment payment) {

            final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM);

            final String id = getSnapshots().getSnapshot(position).getId();

            paymentHolder.getpDate().setText(dateFormat.format(payment.getDueDate()));
            paymentHolder.getpAmount().setText(getAmount(payment.getAmount()));
            paymentHolder.getpDone().setChecked(payment.isPaid());


        }


        @Override
        public PaymentHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

            View view = LayoutInflater.from(viewGroup.getContext())
                    .inflate(R.layout.payment_item, viewGroup, false);

            final PaymentHolder paymentHolder = new PaymentHolder(view);

            return paymentHolder;
        }
    };

    recyclerView.setAdapter(firestoreRecyclerAdapter);