私のAndroidアプリケーションには、MainActivityのArrayListが定義されています。FirebaseデータからArrayListを作成する
私は、ユーザーの興味を引き出し、それを自分のアレイリストに追加する方法を理解しようとすると、苦労しています。
は、ここに私のFirebaseデータが設定されている方法は次のとおりです。私は非同期にデータをロードしなければならないことを理解し、私は、私はそれについて移動する方法へと困惑しています。ここ
は、ArrayListに追加しようとしているために私のコードです:私は、ArrayListには、ユーザの関心から成りたい
public class MainActivity extends AppCompatActivity {
private DatabaseReference eventDatabase;
private DatabaseReference usersDatabase;
private FirebaseAuth mAuth;
private String currentUserID;
private ArrayList<String> userInterests = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
eventDatabase = FirebaseDatabase.getInstance().getReference().child("Event");
usersDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
mAuth = FirebaseAuth.getInstance();
currentUserID = mAuth.getCurrentUser().getUid();
usersDatabase.child(currentUserID).child("interests").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot postSnapshot : dataSnapshot.getChildren()){
boolean isInterested = (Boolean)postSnapshot.getValue();
if (isInterested){
userInterests.add(postSnapshot.getKey());
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
System.out.println(userInterests);
それは、データベース内のfalseの場合、それがリストに追加されることはありません。例:[COMPETITION、文化、教育...など]
それはコンソールにリストを返すとき、私はちょうど空のリストを参照してください - 「[]」
ここでuserInterestsを初期化します –
返されるパスにデータベース内のデータがありますか?これをどのように確認しましたか? UIを再描画するためのアクションを実行しますか? .add()でブレークポイントを試してみたことがありますか?データベースからイベントを受け取った後、配列リストの内容はどこに出力されていますか? [How to Ask](http://stackoverflow.com/help/how-to-ask)と[mcveを作成する](http://stackoverflow.com/help/mcve)を参照してください。 – Kato