Android FirebaseUI 3.0.0:在新版本的“FirebaseRecyclerAdapter”中重写“onDataChange”方法`

Android FirebaseUI 3.0.0:在新版本的“FirebaseRecyclerAdapter”中重写“onDataChange”方法`,android,firebase,firebase-realtime-database,firebaseui,Android,Firebase,Firebase Realtime Database,Firebaseui,根据FirebaseRecyclerAdapter中的Firebase UI 3.0.0,我们必须重写onDataChange方法,但如何检索其中的数据 @Override public void onDataChanged() { super.onDataChanged(); } 有人能解释一下我需要做什么吗?调用valueEventListener还是什么 下面是一些代码片段,它们应该让您走上正确的道路。 如您所见,onDataChange方法是a

根据
FirebaseRecyclerAdapter
中的
Firebase UI 3.0.0
,我们必须重写
onDataChange
方法,但如何检索其中的数据

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

    }
有人能解释一下我需要做什么吗?调用valueEventListener还是什么


下面是一些代码片段,它们应该让您走上正确的道路。 如您所见,
onDataChange
方法是
attachValueEventListener
的一部分

private List<Upload> uploads;
private ValueEventListener mValueEventListener;

private RecyclerView mRecyclerView;
private RecyclerView.Adapter mAdapter;

// In onCreate declare:
uploads = new ArrayList<>();
mRecyclerView = (RecyclerView) findViewById(R.id.recyclerView);

// 1. Implement attachValueEventListener, like this:
private void attachValueEventListener() {
    if (mValueEventListener == null) {
        mValueEventListener = new ValueEventListener() {

            @Override
            public void onDataChange(DataSnapshot snapshot) {

                uploads.clear();

                // iterate through values in database
                for (DataSnapshot postSnapshot : snapshot.getChildren()) {
                    Upload upload = postSnapshot.getValue(Upload.class);
                    uploads.add(upload);
                }

                // create mAdapter
                mAdapter = new MyAdapter(getApplicationContext(), uploads);
                // set mAdapter to recycler view
                mRecyclerView.setAdapter(mAdapter);
            }

            @Override
            public void onCancelled(DatabaseError databaseError) {
                // There was an Error
                Log.d(TAG, "onCancelled: DatabaseError !!!");
                Toast.makeText(getBaseContext(), "attachValueEventListener: Database Error!", Toast.LENGTH_LONG).show();
            }
        };

        mDatabaseReference.addValueEventListener(mValueEventListener);
    }
}

// 2. Implement detachValueEventListener:
private void detachValueEventListener() {
    // detach the listener
    if (mValueEventListener != null) {
        mDatabaseReference.removeEventListener(mValueEventListener);
        mValueEventListener = null;
    }
}

// 3. Attach/Detach the ValueEventListener in onStart/onStop methods:
@Override
protected void onStart() {
    super.onStart();
    // add an event listener to fetch values from firebase database
    attachValueEventListener();
}

@Override
protected void onStop() {
    super.onStop();
    // detach the event listener that fetches values from firebase database
    detachValueEventListener();
}
私有列表上传;
私有值eventlistener mValueEventListener;
私人回收视图mRecyclerView;
专用回收器查看适配器mAdapter;
//在onCreate声明中:
uploads=新建ArrayList();
mRecyclerView=(RecyclerView)findViewById(R.id.RecyclerView);
// 1. 实现attachValueEventListener,如下所示:
私有void attachValueEventListener(){
if(mValueEventListener==null){
mValueEventListener=新的ValueEventListener(){
@凌驾
公共无效onDataChange(数据快照快照){
uploads.clear();
//遍历数据库中的值
对于(DataSnapshot postSnapshot:snapshot.getChildren()){
Upload Upload=postSnapshot.getValue(Upload.class);
上传。添加(上传);
}
//创建mAdapter
mAdapter=新的MyAdapter(getApplicationContext(),上载);
//将mAdapter设置为recycler视图
mRecyclerView.setAdapter(mAdapter);
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
//有一个错误
Log.d(标记“onCancelled:DatabaseError!!!”;
Toast.makeText(getBaseContext(),“attachValueEventListener:数据库错误!”,Toast.LENGTH\u LONG.show();
}
};
mDatabaseReference.addValueEventListener(mValueEventListener);
}
}
// 2. 实现detachValueEventListener:
私有void detachValueEventListener(){
//分离侦听器
if(mValueEventListener!=null){
mDatabaseReference.removeEventListener(mValueEventListener);
mValueEventListener=null;
}
}
// 3. 在onStart/onStop方法中附加/分离ValueEventListener:
@凌驾
受保护的void onStart(){
super.onStart();
//添加事件侦听器以从firebase数据库获取值
attachValueEventListener();
}
@凌驾
受保护的void onStop(){
super.onStop();
//分离从firebase数据库获取值的事件侦听器
detachValueEventListener();
}