gpt4 book ai didi

java - 为什么无法从 firebase 扫描数据

转载 作者:行者123 更新时间:2023-12-01 18:06:31 25 4
gpt4 key购买 nike

我在 onStart 方法中从 firebase 获取数据并将它们放入 Arraylist(user_words) 中。但在 onCreateView 方法中,我的 Arraylist 看起来是空的。然而,在 onstart 中,数组列表看起来已满。我在不同的类(class)做了同样的事情,而且很有效。但这一次失败了。我不明白我的错是什么?

private DatabaseReference databaseReference2 = FirebaseDatabase.getInstance().getReference("kullanici_kelime");

private ArrayList<User_word> user_words= new ArrayList<>();

@Override
public void onStart(){
super.onStart();

databaseReference2.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {

user_words.clear();

for (DataSnapshot postSnapshot : dataSnapshot.getChildren()) {

User_word user_word= new User_word();
user_word.setMean(postSnapshot.child("mean").getValue(String.class)) ;
user_word.setName(postSnapshot.child("name").getValue(String.class));
user_word.setKey(postSnapshot.child("key").getValue(String.class));
user_word.setKey(postSnapshot.child("id").getValue(String.class));

user_words.add(user_word);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {

}
});
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {

View view =inflater.inflate(R.layout.fragment_frag3, container,false);

rv= (RecyclerView)view.findViewById(R.id.rv2);
rv.setHasFixedSize(true);
rv.setLayoutManager(new LinearLayoutManager(this.getActivity()));

Log.e("wordssize",Integer.toString(user_words.size()));
adapter= new CardAdapter2_2(getActivity(),user_words);
rv.setAdapter(adapter);

return view;
}

database structure

最佳答案

addValueEventListener 是异步的,在数据​​库查询完成之前立即返回。只要数据可用,您传递给它的回调就会在一段时间后被调用。在填充数据之前,您不应该尝试使用该数组,这意味着您应该只更新 Activity 的 UI,直到最终调用该回调。

关于java - 为什么无法从 firebase 扫描数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60548376/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com