我正在尝试从某个表中获取recieverUID,然后从另一个表中获取用户名的值来辅助UID。 我认为正在发生的是,在我将receivedName数组列表设置为常量时,App正常运行时,在获取receivedNames数组列表之前设置了适配器。 请告诉我这里有什么问题,以及这是否是正确的方法 这是我的数据库的样子, Firebase DB
我的Tab 3 Fragment代码
public class GetName {
private FirebaseAuth auth;
ListView listView;
private DatabaseReference mDatabase;
String receiverName;
public void GetName(String UID){
mDatabase = FirebaseDatabase.getInstance().getReference().child("users");
Query query = mDatabase.orderByKey().equalTo(UID);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot2) {
// dataSnapshot is the "issue" node with all children with id 0
for (DataSnapshot users : dataSnapshot2.getChildren()) {
receiverName = users.child("username").getValue(String.class);
receiverNames.add(receiverName);
Log.d("name retrieved",receiverNames.toString());
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
这是我的GetName类
.container:hover {
position:relative;
width:calc(100% + 5px);
left:-5px;
box-sizing:border-box;
padding-left:5px;
}
答案 0 :(得分:1)
要解决此问题,请在receiverNames
方法中添加onDataChange()
ArrayList的声明,否则它将为null。由于该方法的异步行为,这种情况正在发生。如果您想在该方法之外使用这些值,请参阅此post的答案。