AsyncTask
から返されたデータを使って何かを行う方法を理解しようとしています。非同期タスク(Firebase)によって返されたデータを処理する
私は、非同期Firebase get操作(別のクラスに存在する操作)を呼び出すアクティビティを持っており、取り出されたArrayListのサイズでアクティビティに存在するTextView
を更新したいと考えています。ここでの活動のonCreateで呼び出さを取得し、私のFirebaseコールは次のとおりです。
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