【发布时间】:2017-09-02 00:31:03
【问题描述】:
我正在使用 firebase 为 android 制作应用程序。我想做的是每个节点都有一个级别号:
User---
|
---> Jamse---
| |
| ---> Level = 0
---> Taylor---
|
----> Level = 1
我想遍历每个节点并将级别号存储在 ArrayList 中。但问题是我的 ArrayList 填充了级别编号只能存在于 firebaseListener 函数内部。在函数之外,ArrayList 是空的。谁能给我一个关于如何解决这个问题的建议?
代码:
private ArrayList<Integer> parentLevel;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_linked_people_tree);
LinearLayout linked = (LinearLayout) findViewById(R.id.linkedlayoutid);
mFirebaseAuth = FirebaseAuth.getInstance();
users = mFirebaseAuth.getCurrentUser();
mDatabaseReference = FirebaseDatabase.getInstance().getReference();
parentLevel = new ArrayList<Integer>();
mDatabaseReference.child("Users").child(users.getUid()).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(dataSnapshot.child("OriginalUser").child("Parents").hasChildren()) {
DataSnapshot parentSnapshot = dataSnapshot;
int level = 0;
relatedParentNodeFinder(parentSnapshot, users.getUid(), level);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
【问题讨论】:
-
你为什么要在回调之外使用 Arraylist?您的 Arraylist 绝对可以存在于侦听器之外。请添加您的代码
-
我添加了代码
-
parentLevel.add(level);将级别编号添加到数组列表中,但是当我尝试在主要的 firebase 侦听器之后访问它时,它会将其显示为 emoty 数组
-
您实际在哪里使用该列表?
-
我更新代码,可以看到箭头
标签: java android firebase arraylist