其他分享
首页 > 其他分享> > android – 如何在FirebaseListAdapter完成时收到通知?

android – 如何在FirebaseListAdapter完成时收到通知?

作者:互联网

我正在使用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建立在同步数据的前提下.出于这个原因,从来没有真正的同步过程.

一次性下载一个位置的初始数据集,并为每个子节点调用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) {

    }
});

在上面的代码片段中,所有孩子都已经添加到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到达后,您可以使用此方法隐藏进度条.

标签:firebaseui,android,firebase,listview,progressdialog
来源: https://codeday.me/bug/20191007/1867325.html