【发布时间】:2020-05-26 15:15:32
【问题描述】:
目前我只从 Cloud Firestore 中检索项目的最大大小 -1,这意味着如果有 3 个项目,它只会检索 2 个。我可以知道我在从 collection().document() 检索项目时做错了什么。收藏()?
这是我在 xml 中保存 RecyclerView 的章节片段
public class ChapterFragment extends Fragment {
FirebaseFirestore db;
private RecyclerView recyclerView;
private View view;
private Query mQuery;
private FirestoreRecyclerAdapter adapter;
private String documentId;
public ChapterFragment() {
}
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
db = FirebaseFirestore.getInstance();
view = inflater.inflate(R.layout.fragment_chapter, container, false);
recyclerView = view.findViewById(R.id.chapter);
//Query
mQuery = db.collection("Book").document("1").collection("1").orderBy("Volume", Query.Direction.DESCENDING);
//Options
FirestoreRecyclerOptions<ChapterDetails> options = new FirestoreRecyclerOptions.Builder<ChapterDetails>()
.setQuery(mQuery,ChapterDetails.class)
.setLifecycleOwner(this)
.build();
//ViewHolder
adapter = new FirestoreRecyclerAdapter<ChapterDetails, ChapterDetailsViewHolder>(options) {
@NonNull
@Override
public ChapterDetailsViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view2 = LayoutInflater.from(parent.getContext()).inflate(R.layout.chapter_list, parent , false);
return new ChapterDetailsViewHolder(view2);
}
@Override
protected void onBindViewHolder(@NonNull ChapterDetailsViewHolder holder, int position, @NonNull ChapterDetails model) {
holder.volume.setText("volume " + model.getVolume());
holder.PDF.setText(model.getPDF());
}
};
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(getContext()));
recyclerView.setAdapter(adapter);
return view;
}
private class ChapterDetailsViewHolder extends RecyclerView.ViewHolder{
private TextView volume;
private TextView PDF;
public ChapterDetailsViewHolder(@NonNull View itemView) {
super(itemView);
volume = itemView.findViewById(R.id.volume_number);
PDF = itemView.findViewById(R.id.pdf_text);
}
}
}
这是我的firestore的图片:
这是我的章节详情
public class ChapterDetails {
private String Volume,PDF;
public ChapterDetails(){
//empty
}
public ChapterDetails(String volume, String pdf) {
Volume = volume;
PDF = pdf;
}
public String getVolume() {
return Volume;
}
public void setVolume(String volume) {
Volume = volume;
}
public String getPDF() {
return PDF;
}
public void setPDF(String PDF) {
this.PDF = PDF;
}
}
This is how it looks in the android emulator
2020 年 5 月 28 日编辑:
D/error: get failed with
com.google.firebase.firestore.FirebaseFirestoreException: Failed to get document from cache. (However, this document may exist on the server. Run again without setting source to CACHE to attempt to retrieve the document from the server.)
at com.google.firebase.firestore.core.FirestoreClient.lambda$getDocumentFromLocalCache$9(com.google.firebase:firebase-firestore@@21.4.3:197)
at com.google.firebase.firestore.core.FirestoreClient$$Lambda$9.then(Unknown Source:0)
at com.google.android.gms.tasks.zzd.run(Unknown Source:5)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
I/TAG: Current value of i = 1
I/TAG: Current value of i = 2
I/TAG: Current value of i = 3
I/TAG: Current value of i = 4
I/TAG: Current value of i = 5
I/TAG: Current value of i = 6
显然,firestore 说我创建了源缓存?我没有
【问题讨论】:
-
嗨@Alex Mamo 我可以知道这如何回答我的问题吗?
-
以一种您应该更改字段名称或使用注释的方式。请检查副本。在您的课程中,您应该在数据库中有名为小写的字段。
-
@AlexMamo 我按照帖子所说的做了,并将它们更改为小写字母,但是现在我什至在 recyclerview 中都看不到单个项目
-
@Alex:我做到了:)(我丢失了您的链接,但请随时将其添加到末尾的“另请参阅”列表中)。也就是说,显然 OP 的问题不在于属性名称(不知道这将如何与数据库结构和代码一起使用),而在于项目的数量。但我也看不出它会在哪里跳过更多文档。
-
有趣的假设 Alex.
标签: java android firebase google-cloud-firestore firebaseui