gpt4 book ai didi

android - FirebaseListAdapter 完成时如何得到通知?

转载 作者:行者123 更新时间:2023-11-29 14:19:44 25 4
gpt4 key购买 nike

我正在使用 FirebaseListAdapter,我需要显示 ProgressDialog,但我不知道如何知道它何时完成加载。

    public class TabFragment1 extends ListFragment {

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.tab_fragment_1, container, false);
ListView eventosView = (ListView) rootView.findViewById(android.R.id.list);
Firebase ref = new Firebase(//myappurl);
Firebase usersRef = new Firebase(//myappurl/eventos/users);
Singleton singletonUser = Singleton.getInstance();
setUser(singletonUser);

Firebase ref = new Firebase(//myappurl/eventos);
FirebaseListAdapter<Evento> mAdapter = new FirebaseListAdapter<Evento>(getActivity(), Evento.class, R.layout.event_row, ref) {
@Override
protected void populateView(View view, Evento evento) {
((TextView)view.findViewById(R.id.eventTitle)).setText(evento.getNome());
((TextView)view.findViewById(R.id.eventPlace)).setText(evento.getLocal());
}
};
setListAdapter(mAdapter);
return mAdapter;


return rootView;
}

private void setUser(Singleton singletonUser){
singletonUser.getToken();
singletonUser.setUuid();
singletonUser.getUuid();
}


}

我什么时候可以放置 ProgressDialog.dismiss()?

最佳答案

Firebase 建立在同步 数据的前提下。因此,永远不会有真正完成同步的时刻。

一个位置的初始数据集是一次性下载的,结果是为每个 child 调用onChildAdded(),然后是一个 onDataChanged()。如果您想在初始数据加载后隐藏进度条,您可以为单个事件注册一个 ValueEventListener:

ref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// the initial data has been loaded, hide the progress bar
}

@Override
public void onCancelled(DatabaseError firebaseError) {

}
});

在上面的代码 fragment 中,所有子项都已经添加到您的 ListView 中。根据您的用例,这可能是隐藏进度条的正确时间,也可能比预期的要晚。

如果你想知道第一个数据何时被渲染,你可以用你的适配器注册一个观察者:

adapter.registerDataSetObserver(new DataSetObserver() {
@Override
public void onChanged() {
super.onChanged();
// the first time you get here, hide the progress bar
}

@Override
public void onInvalidated() {
super.onInvalidated();
}
});

您可以使用这种方法在第一个数据从 Firebase 到达后立即隐藏进度条。

关于android - FirebaseListAdapter 完成时如何得到通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34982347/

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