Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java RecyclerView不显示来自firebase的数据_Java_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

Java RecyclerView不显示来自firebase的数据

Java RecyclerView不显示来自firebase的数据,java,android,firebase,firebase-realtime-database,android-recyclerview,Java,Android,Firebase,Firebase Realtime Database,Android Recyclerview,代码 保存数据 protected void onStart() { super.onStart(); fetchResults(); } private void fetchResults() { mDatabaseReference.child("Users").child(id).child("Quiz").child("Results").addValueEventListener(new ValueEventListener() { @Over

代码

保存数据

protected void onStart() {
    super.onStart();
    fetchResults();
}

private void fetchResults() {
    mDatabaseReference.child("Users").child(id).child("Quiz").child("Results").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            for (DataSnapshot resultSnapshot: dataSnapshot.getChildren()) {
                String user = resultSnapshot.getKey();
                String score = resultSnapshot.getValue(String.class);
                Results results = new Results(user, score);
                resultsList.add(results);
            }
            mAdapter.notifyDataSetChanged();
        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
}
String name=receiversname;
HashMap userMap=新的HashMap();
userMap.put(“Name”,Name);
userMap.put(“Score”,String.valueOf(mScore));
mRef.child(“用户”).child(receiversid).child(“测验”).child(“结果”).child(UID).setValue(userMap).addOnCompleteListener(新OnCompleteListener()){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
意向意向=新意向(takingquick.this,TakingQuizDone.class);
intent.putExtra(“receiversid”,receiversid);
intent.putExtra(“Score”,mScore.toString());
星触觉(意向);
完成();
}
}
});
数据库结构-


如果它的名称是常量,值是变量,我想我可以自己解决它,但这里的名称是由用户的名称和值的分数设置。。。我从未在firebase数据库中如此不确定地使用过这种类型。。。当我运行上述代码时,它不会显示任何内容,只是一个空白屏幕。首先,您需要从firebase获取所有数据,并在最后一个项目计数时应用检查,然后将数据设置到适配器中。 请参考以下代码以供参考

 String name = RecieversName;
                HashMap<String, String> userMap = new HashMap<>();
                userMap.put("Name", name);
                userMap.put("Score", String.valueOf(mScore));
                mRef.child("Users").child(RecieversId).child("Quiz").child("Results").child(UID).setValue(userMap).addOnCompleteListener(new OnCompleteListener<Void>() {
                    @Override
                    public void onComplete(@NonNull Task<Void> task) {
                        if (task.isSuccessful()) {
                            Intent intent = new Intent(TakingQuiz.this, TakingQuizDone.class);
                            intent.putExtra("RecieversId",RecieversId);
                            intent.putExtra("Score", mScore.toString());
                            startActivity(intent);
                            finish();

                        }
                    }
                });

你知道firebase用户界面吗?您可以使用firebaseRecyclerAdapter对此进行归档,请在此处查看。请发布适配器代码检查:
int totalItem = 0;
private void fetchResults() {
    mDatabaseReference.child("Users").child(id).child("Quiz").child("Results").addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
totalItem = dataSnapshot. getChildrenCount();
            for (DataSnapshot resultSnapshot: dataSnapshot.getChildren()) {
                String user = resultSnapshot.getKey();
                String score = resultSnapshot.getValue(String.class);
                Results results = new Results(user, score);
                resultsList.add(results);
                if(totalItem == resultsList.size())
                {
                // set the data into Adapter
                }
            }

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
}