Currently i am only retrieving max size of items -1 from the Cloud Firestore meaning if there's 3 items it will only retrieve 2. May i know what i am doing wrong for retrieving the items from collection().document().collection()?
This is my Chapter Fragment which holds the RecyclerView in xml
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);
}
}
}
This is the picture of my firestore:
This is my ChapterDetails
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
EDIT 28/5/2020:
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
apparently firestore is saying i created source CACHE? which i didn't