【发布时间】:2021-01-25 16:54:54
【问题描述】:
我有一个扩展 Fragment 的类,并在其 onCreateView 方法中包含对 Firebase 的查询。用调试器分析程序后,我意识到这个查询直到视图返回后才执行。
查询返回将加载到回收站视图中的信息。我还为数据本身创建了一个适配器。该代码不会产生任何错误,但它没有按应有的方式运行。 理想情况下,查询应该首先执行,这样我才能在这个 recyclerview 上显示数据。知道为什么会这样吗?
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable final ViewGroup container, @Nullable Bundle savedInstanceState)
{
final View view=inflater.inflate(R.layout.frag_events, container, false);
eventIds =new ArrayList<String>();
//executes after view has been returned
ValueEventListener eventIdValListener=new ValueEventListener()
{
@Override
public void onDataChange(@NonNull DataSnapshot snapshot)
{
eventIds.clear();
if(snapshot.exists())
{
for (DataSnapshot e : snapshot.getChildren())
{
String event = e.getValue(String.class);
eventIds.add(event);
}
}
}
@Override
public void onCancelled(@NonNull DatabaseError error)
{
}
};
//returns data for current user
Query query=FirebaseDbSingleton.getInstance().dbRef.child("User").child(FirebaseDbSingleton.getInstance().user.getUid().toString()).child("events");
query.addValueEventListener(eventIdValListener);
return view;
}
我为回收器和适配器省略了一些行,只是为了保持这段代码简短。我感觉这可能是由于 eventIdValListener 中的内部类,但我不完全确定。
【问题讨论】:
标签: java android firebase android-fragments firebase-realtime-database