Я пытаюсь выяснить, как что-то сделать с данными, возвращаемыми с AsyncTask
.Обработка данных, возвращаемых задачей Async (Firebase)
У меня есть активность, в которой я вызываю операцию async Firebase get (операция, существующая в другом классе), и я хочу обновить TextView
, существующий в Activity, с размером полученного ArrayList. Вот мой Firebase вызов, получить называется в OnCreate активность:
public void getAttendants() {
ArrayList<AttendModel> attendees = new ArrayList<AttendModel>();
FirebaseConnection.getInstance().getAllAttendeesFor(uuid, attendees);
Log.d("attendees", String.valueOf(attendees.size()));
}
и вот моя Firebase операция:
public void getAllAttendeesFor(String UUID, final ArrayList<AttendModel> attendArray) {
final DatabaseReference attendObjects = getDatabaseTableWith(Constants.tableAttendObject);
Query queryRef = attendObjects.orderByChild(Constants.taAttendObjectUUID).equalTo(UUID);
queryRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {
HashMap<String, Object> attend = (HashMap<String, Object>) postSnapshot.getValue();
String UUID = (String) attend.get(Constants.taAttendObjectUUID);
String userUsername = (String) attend.get(Constants.AttendObjectUserUsername);
AttendModel attendModel = new AttendModel(userUsername, UUID);
attendArray.add(attendModel);
//here would like to notify or somehow return the attendArray
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
Каков наилучший подход этого в Android? Есть ли возможность реализовать адаптер типа или обработчик завершения?
'ValueEventListener.onDataChange' * есть * обработчик завершения. Рассматривали ли вы возможность обновить текстовое представление изнутри? –
Я сделал, но на данный момент у меня есть класс, где я выполняю все свои операции Firebase и хотел бы иметь элегантный способ вернуть значение обратно в класс, который он вызвал (таким образом я устраняю избыточность кода в других классах, что, возможно, мне понадобится выполнить одну и ту же операцию) – John
есть способ, которым я могу самостоятельно создать обработчик завершения для моей функции, который будет вызываться в 'onDataChange'? – John