【发布时间】:2016-12-29 05:34:00
【问题描述】:
我在我的 Android 应用中为我的 MainActivity 定义了一个 ArrayList。
我在尝试了解如何检索用户的兴趣并将其添加到我的数组列表时遇到了困难。
以下是我的 Firebase 数据的设置方式:
我知道我必须异步加载数据,但我不知道该怎么做。
这是我尝试添加到 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);
我希望 ArrayList 包含用户的兴趣,如果在数据库中为 false,则不会添加到列表中。示例:[竞赛、文化、教育...等]
当它在控制台返回列表时,我只看到一个空列表——“[]”
【问题讨论】:
-
你在哪里初始化 userInterests
-
返回路径的数据库中是否有数据?你是如何验证这一点的?您是否采取任何措施使 UI 重绘?您是否尝试过在 .add() 处设置断点以查看它是否被调用过?从数据库接收到事件后,数组列表的内容在哪里输出?见how to ask 和creating an mcve。
标签: android firebase firebase-realtime-database