Я пытаюсь загрузить вложенную коллекцию в моей базе данных Firebase и сохранить идентификаторы документов в архиве, который называется электронная почта.Кажется, загрузка работает, но все значения обнуляются после завершения onComplete.Я вызываю методы set для установки переменных моего класса, но это, похоже, не работает. Вот изображение моей базы данных. image
package com.example.eventfeed.eventFeed;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.NavigationView;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import com.example.eventfeed.login.ActivityLoginEmail;
import com.example.eventfeed.model.Person;
import com.example.eventfeed.model.Post;
import com.example.eventfeed.profiles.Profile_girl;
import com.example.eventfeed.profiles.Profile_guy;
import com.example.eventfeed.profiles.Profile_guy1;
import com.example.eventfeed.R;
import com.example.eventfeed.signup.RegisterActivity;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.OnSuccessListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.firestore.CollectionReference;
import com.google.firebase.firestore.DocumentReference;
import com.google.firebase.firestore.DocumentSnapshot;
import com.google.firebase.firestore.FirebaseFirestore;
import com.google.firebase.firestore.QueryDocumentSnapshot;
import com.google.firebase.firestore.QuerySnapshot;
import com.google.firebase.firestore.Source;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;
import java.util.ArrayList;
import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.List;
import javax.security.auth.callback.Callback;
public class PeopleGoing extends Activity {
private DocumentReference mDocRef ;
private CollectionReference docRefEventGoers ;
private FirebaseStorage storage = FirebaseStorage.getInstance();
private StorageReference storageRef = storage.getReference();
private StorageReference coverPhotos;
private StorageReference profilePics;
private ImageView cover_photo;
private ImageView profile_photo;
private NavigationView navigationView;
private DrawerLayout drawerLayout;
private ActionBarDrawerToggle actionBarDrawerToggle;
private RecyclerView postList;
private PeopleGoingAdapter mAdapter;
private RecyclerView.LayoutManager mLayoutManager;
private Toolbar mToolbar;
private static String email;
private static String name;
private LinkedHashMap<String,Person> people = new LinkedHashMap<String, Person>();
private ArrayList<String> emails = new ArrayList<String>();
private static String value;
public void setName(String name) {
this.name = name;
}
public void setEmails(ArrayList<String> emails) {
this.emails = emails;
}
public ArrayList<String> getEmails() {
return emails;
}
public static String getName() {
return name;
}
public void setValue(String value) {
this.value = value;
}
public static String getValue() {
return value;
}
public void setEmail(String email) {
this.email = email;
}
public static String getEmail() {
return email;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.people_going_window);
Bundle b = getIntent().getExtras();
// or other values
if(b != null) {
value = b.getString("event");
}
docRefEventGoers = FirebaseFirestore.getInstance().collection("events/"+ value+"/atendees");
docRefEventGoers.get().addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
@Override
public void onComplete(@NonNull Task<QuerySnapshot> task) {
if(task.isSuccessful()){
for (QueryDocumentSnapshot document : task.getResult()){
ArrayList<String> temp = new ArrayList<String>();
temp.add(document.getId());
setEmails(temp);
}
}
}
});
РЕДАКТИРОВАТЬ Данные действительно загружаются временная загрузка
Однако после окончания полного письма электронные письма пусты, даже если setEmails называется пустые письма
РЕДАКТИРОВАТЬ2: Тем не менее, не удалось выяснить проблему, дляЛюбой, у кого была такая же проблема, я обошел ее, поместив всю необходимую функциональность в прослушиватель oncomplete.Определенно не оптимальное решение, но достаточно хорошее, если вы в затруднительном положении.