Я пытаюсь добавить данные моего узла Firebase в объект ArrayList. Но данные не заполняются в мой объект ArrayList, и я получаю размер ArrayList равным 0, когда вызывается onPostExecute ().
Как добавить узел Firebase в ArrayList?
Мой android код
public class FirebaseSyncContacts extends AsyncTask<Void,Void,Void> {
Map<String,String > contacts;
ArrayList<FirebaseUserModel> userModelObjects;
Context context;
public FirebaseSyncContacts(Context context,Map<String,String>contacts)
{
this.context=context;
this.contacts=contacts;
userModelObjects=new ArrayList<>();
}
protected void onPreExecute() {
Log.i("app","Syncing started");
}
protected Void doInBackground(Void... voids) {
DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference().child("Users");
rootRef.addListenerForSingleValueEvent(new ValueEventListener() {
public void onDataChange(DataSnapshot dataSnapshot) {
for(Map.Entry<String, String> singleContact: contacts.entrySet()) {
if (dataSnapshot.hasChild(singleContact.getKey())) {
Log.i("app", "Present: " + singleContact.getKey());
userModelObjects.add(dataSnapshot.getValue(FirebaseUserModel.class));
}
else {
Log.i("app", "Absent: " + singleContact.getKey());
userModelObjects.add(dataSnapshot.getValue(FirebaseUserModel.class));
}
}
}
public void onCancelled(DatabaseError databaseError) {
Log.i("app","failed to connect: "+databaseError.getMessage());
}
});
return null;
}
protected void onPostExecute(Void aVoid) {
Log.i("app","total contacts added: "+userModelObjects.size()); // always getting 0
}
}
FirebaseUserModel. java class
public class FirebaseUserModel {
private String fname,lname,gender;
private int isInstalled,day,month,year;
public FirebaseUserModel() { }
public FirebaseUserModel(String fname,String lname,String gender,int isInstalled,int day,int month,int year)
{
this.fname=fname;
this.lname=lname;
this.gender=gender;
this.isInstalled=isInstalled;
this.day=day;
this.month=month;
this.year=year;
}
}
Структура Firebase
-Users
-ContactNo
-fname
-lname
-gender
-isInstalled
-day
-month
-year
Ожидаемый результат: Следует добавить каждый узел с номером контакта в userModelObjects ArrayList и вернуть onPostExecute () общий размер массива, т. Е. Всего добавленных контактов
Фактический результат: Возвращает размер как 0 после onPostExecute (), т.е. никакой объект не добавлен
РЕДАКТИРОВАТЬ Я получаю предупреждение для каждого номера контакта в виде W / ClassMapper: Нет установщика / поле для 91987654321 найдено в классе com.demo.example.Firebase.FirebaseUserModel
Я удалил ASyncTask, но все еще получаю эту проблему.