Java 对FirestoreRecyclerAdapter使用查询时,我没有调用get(),但我需要设置Query.get(Source.SERVER)
在我的android应用程序中,我正在使用Java 对FirestoreRecyclerAdapter使用查询时,我没有调用get(),但我需要设置Query.get(Source.SERVER),java,android,firebase,google-cloud-firestore,firebaseui,Java,Android,Firebase,Google Cloud Firestore,Firebaseui,在我的android应用程序中,我正在使用FirestoreRecyclerAdapter,从中绑定Query和Model。当应用程序离线时,我需要它不显示任何内容。但应用程序显示缓存中的数据,根据 我还尝试在FirestoreRecyclerOptions上设置PersistenceEnabled(false),但没有任何帮助 从中,我发现我需要在Query上使用get(Source.SERVER),但我在Query上没有使用get(),因为我在FirestoreRecyclerOptions
FirestoreRecyclerAdapter
,从中绑定Query
和Model
。当应用程序离线时,我需要它不显示任何内容。但应用程序显示缓存中的数据,根据
我还尝试在FirestoreRecyclerOptions
上设置PersistenceEnabled(false),但没有任何帮助
从中,我发现我需要在Query
上使用get(Source.SERVER)
,但我在Query
上没有使用get()
,因为我在FirestoreRecyclerOptions
中使用它,这是由FirestoreRecyclerAdapter
使用的
这是我的代码,基本上与firebaseui第160-178行中的相同
Query query = FirebaseFirestore.getInstance()
.collection("files")
.orderBy("timestamp")
.limit(50);
FirestoreRecyclerOptions<FileToPrint> options = new FirestoreRecyclerOptions.Builder<FileToPrint>()
.setQuery(query, FileToPrint.class)
.build();
adapter = new FirestoreRecyclerAdapter<FileToPrint, FileToPrintHolder>(options) {
@Override
public void onBindViewHolder(FileToPrintHolder holder, int position, FileToPrint model) {
// Bind the Chat object to the ChatHolder
holder.bind(model);
}
@Override
public FileToPrintHolder onCreateViewHolder(ViewGroup group, int i) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(group.getContext())
.inflate(R.layout.file_to_print_item, group, false);
return new FileToPrintHolder(view);
}
};
mRecyclerView.setAdapter(adapter);
Query Query=FirebaseFirestore.getInstance()
.collection(“文件”)
.orderBy(“时间戳”)
.限额(50);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,FileToPrint.class)
.build();
适配器=新FirestoreRecyclerAdapter(选项){
@凌驾
BindViewHolder上的公共无效(FileTopPrintHolder、int位置、FileTopPrint型号){
//将聊天对象绑定到ChatHolder
绑定(模型);
}
@凌驾
公共文件TopPrintHolder onCreateViewHolder(视图组,int i){
//创建ViewHolder的新实例,在本例中,我们使用自定义
//为每个项目调用R.layout.message的布局
View=LayoutInflater.from(group.getContext())
.充气(R.layout.file\u to\u print\u项目,组,假);
返回新文件TopPrintHolder(视图);
}
};
mRecyclerView.setAdapter(适配器);
当我断开Internet连接时,我希望看到空列表,但我看到的是以下日志:
Firestore:(21.0.0)[OnlineStateTracker]:无法访问云Firestore后端。后端在10秒内没有响应
这通常表示您的设备目前没有正常的Internet连接。客户端将在脱机模式下运行,直到能够成功连接到后端
及
如果您使用的是
recyclerView.setHasFixedSize(true)代码>
删除它这对我来说是工作…试试看。你是如何尝试使用。setPersistenceEnabled(false)
的,但它不起作用?不确定我是否做对了,但我在帖子中的代码前面放了以下代码:FirebaseFirestore db=FirebaseFirestore.getInstance();FirebaseFirestoreSettings设置=新建FirebaseFirestoreSettings.Builder().setPersistenceEnabled(false.build();db.setFirestoreSettings(设置);FirebaseFirestore.getInstance().setFirestoreSettings(设置);是的,但是当你这么做的时候发生了什么?当我断开AVD与互联网的连接时,它仍然会显示列表中的一些项目。当我的代码在firebase server中更改状态时,我还可以选中/取消选中复选框。我应该看到,只有在服务器更改了特定复选框的状态后,复选框才会更改其状态。因此,我所期望的是UI完全依赖于服务器状态,或者不显示任何其他内容。您是否尝试清除缓存,使用。setPersistenceEnabled(false)
并再次读取数据?这样行吗?