Я попробовал приведенный ниже код для извлечения кода из моей базы данных Firestore. Структура базы данных выглядит так: Структура базы данных Все документы из коллекции Devices должны быть получены и отображены в приложении. Но тост выше для l oop работает, и как только код входит внутрь для l oop, он не работает. Так что тост внутри для l oop не работает и, следовательно, данные не извлекаются. Я перепробовал все методы, которые мы можем использовать для получения данных, но ни один из них не работает. Пожалуйста, предоставьте мне решение. Заранее спасибо.
public class CurrentStatusDevicesFragment extends Fragment {
private static final String name = "title";
private static final String type = "description";
private TextView textViewData;
private String houseId;
private String userId;
private String data;
FirebaseFirestore firebaseFirestore = FirebaseFirestore.getInstance();
FirebaseAuth firebaseAuth=FirebaseAuth.getInstance();
//DocumentReference dRef = firebaseFirestore.collection("Houses/").document(houseId);
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.device_profile, container, false);
textViewData = (TextView) rootView.findViewById(R.id.textViewData);
userId = firebaseAuth.getCurrentUser().getUid();
firebaseFirestore.collection("Users")
.document("userId").get()
.addOnCompleteListener(new OnCompleteListener<DocumentSnapshot>() {
@Override
public void onComplete(Task<DocumentSnapshot> task) {
if (task.isSuccessful()) {
DocumentSnapshot document = task.getResult();
if (document.exists()) {
houseId = document.getString("HOUSE_ID");
} else {
Log.d("TAG", "No such document");
}
} else {
Log.d("TAG", "get failed with ", task.getException());
}
}
});
CollectionReference cRef = firebaseFirestore.collection("Devices");
cRef.whereEqualTo("HOUSE_ID", houseId).addSnapshotListener(new EventListener<QuerySnapshot>() {
@Override
public void onEvent(QuerySnapshot queryDocumentSnapshots, FirebaseFirestoreException e) {
if(e!=null){
Log.w("TAG","Listen Failed",e);
return;
}
data="";
Toast.makeText(getContext(),"Hello",Toast.LENGTH_SHORT).show();
for(QueryDocumentSnapshot document:queryDocumentSnapshots){
Toast.makeText(getContext(),"Bye",Toast.LENGTH_SHORT).show();
Device device = document.toObject(Device.class);
String name = device.getName();
String type = device.getType();
data+= "Name: "+name+"\nType of device: "+type;
}
textViewData.setText(data);
}
});
});
return rootView;
}
//Device Class
package com.example.android.aide;
public class Device {
private String NAME;
private String TYPE;
private String documentId;
public Device(){}
public String getDocumentId(){
return documentId;
}
public void setDocumentId(String documentId){
this.documentId = documentId;
}
public Device(String NAME, String TYPE){
this.NAME = NAME;
this.TYPE = TYPE;
}
public String getName() {
return NAME;
}
public String getType() {
return TYPE;
}
}
device_profile. xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textViewData"
android:layout_width="match_parent"
android:textSize="30sp"
android:layout_height="wrap_content" />
</LinearLayout>
`