Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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 在Android中从Firestore检索子集合数据_Java_Android_Firebase_Google Cloud Firestore_Firebaseui - Fatal编程技术网

Java 在Android中从Firestore检索子集合数据

Java 在Android中从Firestore检索子集合数据,java,android,firebase,google-cloud-firestore,firebaseui,Java,Android,Firebase,Google Cloud Firestore,Firebaseui,尝试单击RecyclerView时,我无法从子集合“日记”中检索数据。我想要的是,当我点击RecyclerView时,它将显示存储在“日记”中的数据。我的代码有什么问题 RecyclerView Java代码: private void setUpRecyclerView() { fStore = FirebaseFirestore.getInstance(); FirebaseUser user = FirebaseAuth.getInstance().getCurrentUs

尝试单击RecyclerView时,我无法从子集合“日记”中检索数据。我想要的是,当我点击RecyclerView时,它将显示存储在“日记”中的数据。我的代码有什么问题

RecyclerView Java代码:

private void setUpRecyclerView() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Query query = fStore.collection("Users").document(user.getUid()).collection("Diary").orderBy("Date", Query.Direction.ASCENDING);

    FirestoreRecyclerOptions<ModelClass> options = new FirestoreRecyclerOptions.Builder<ModelClass>()
            .setQuery(query, ModelClass.class)
            .build();

    adapters = new CustomAdapter(options,this);

    adapters.startListening();
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapters);

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            adapters.deleteItem(viewHolder.getAdapterPosition());
        }
    }).attachToRecyclerView(recyclerView);


}

@Override
public void onItemClick(final DocumentSnapshot snapshot, int position) {
    final ModelClass diary = snapshot.toObject(ModelClass.class);
    String id = snapshot.getId();
   startActivity(new Intent(diary_user.this,onClickRecyclerViewDiary_user.class));
    Toast.makeText(diary_user.this,"Position: " + position + "ID: " + id,Toast.LENGTH_SHORT).show();

}
check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseUser user = fAuth.getCurrentUser();
            String uid = user.getUid();
            String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
            DocumentReference df = fStore.collection("Users").document(user.getUid()).collection("Diary").document(id);
            Map<String, Object> diaryInfo = new HashMap<>();
            diaryInfo.put("Symptom", symptom.getEditText().getText().toString());
            diaryInfo.put("Note", note.getEditText().getText().toString());
            diaryInfo.put("Date", dateButton.getText().toString());
            diaryInfo.put("ID",id);

            SimpleDateFormat tf = new SimpleDateFormat("hh:mm a");
            String currentTime = tf.format(Calendar.getInstance().getTime());
            time.setText(currentTime);
            diaryInfo.put("Time", time.getText().toString());

            feeling = spinner.getSelectedItem().toString();
            diaryInfo.put("Feeling", feeling);

            df.set(diaryInfo).addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(Object o) {
                    Toast.makeText(add_diary_user.this, "Data successfully stored", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(add_diary_user.this, diary_user.class));
                    finish();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(add_diary_user.this, e.toString(), Toast.LENGTH_SHORT).show();
                }
            });

        }
    });
private void getDiary() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = fAuth.getCurrentUser();
    String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
    fStore.collection("Users").document(user.getUid()).collection("Diary");
            diary.whereEqualTo("ID", id)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (DocumentSnapshot document : task.getResult()) {
                            // Do something with your retrieved documents
                            dateButton.setText((CharSequence) document.getString("Date"));
                            note.getEditText().setText((CharSequence) document.getString("Note"));
                            symptom.getEditText().setText((CharSequence) document.getString("Symptom"));
                        }
                    }
                }
            });
}
private void setuprecyclererview(){
fStore=FirebaseFirestore.getInstance();
FirebaseUser=FirebaseAuth.getInstance().getCurrentUser();
Query Query=fStore.collection(“用户”).document(user.getUid()).collection(“日记”).orderBy(“日期”,Query.Direction.升序);
FirestoreRecyclerOptions选项=新建FirestoreRecyclerOptions.Builder()
.setQuery(查询,ModelClass.class)
.build();
adapters=新的CustomAdapter(选项,此选项);
adapters.startListening();
recyclerView.setLayoutManager(新的LinearLayoutManager(本));
recyclerView.setAdapter(适配器);
新建ItemTouchHelper(新建ItemTouchHelper.SimpleCallback(0,
ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT){
@凌驾
公共布尔onMove(@NonNull RecyclerView RecyclerView,@NonNull RecyclerView.ViewHolder ViewHolder,@NonNull RecyclerView.ViewHolder target){
返回false;
}
@凌驾
公共void onsweed(@NonNull RecyclerView.ViewHolder ViewHolder,int-direction){
deleteItem(viewHolder.getAdapterPosition());
}
}).attachToRecyclerView(recyclerView);
}
@凌驾
public void onItemClick(最终文档快照快照,int位置){
最终模型类日志=snapshot.toObject(ModelClass.class);
String id=snapshot.getId();
startActivity(新的意图(日记用户。这个,onClickRecycleServiceWiddiary用户。类));
Toast.makeText(日记\用户。此,“位置:+Position+”ID:+ID,Toast.LENGTH\短)。show();
}
存储数据Java代码:

private void setUpRecyclerView() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Query query = fStore.collection("Users").document(user.getUid()).collection("Diary").orderBy("Date", Query.Direction.ASCENDING);

    FirestoreRecyclerOptions<ModelClass> options = new FirestoreRecyclerOptions.Builder<ModelClass>()
            .setQuery(query, ModelClass.class)
            .build();

    adapters = new CustomAdapter(options,this);

    adapters.startListening();
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapters);

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            adapters.deleteItem(viewHolder.getAdapterPosition());
        }
    }).attachToRecyclerView(recyclerView);


}

@Override
public void onItemClick(final DocumentSnapshot snapshot, int position) {
    final ModelClass diary = snapshot.toObject(ModelClass.class);
    String id = snapshot.getId();
   startActivity(new Intent(diary_user.this,onClickRecyclerViewDiary_user.class));
    Toast.makeText(diary_user.this,"Position: " + position + "ID: " + id,Toast.LENGTH_SHORT).show();

}
check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseUser user = fAuth.getCurrentUser();
            String uid = user.getUid();
            String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
            DocumentReference df = fStore.collection("Users").document(user.getUid()).collection("Diary").document(id);
            Map<String, Object> diaryInfo = new HashMap<>();
            diaryInfo.put("Symptom", symptom.getEditText().getText().toString());
            diaryInfo.put("Note", note.getEditText().getText().toString());
            diaryInfo.put("Date", dateButton.getText().toString());
            diaryInfo.put("ID",id);

            SimpleDateFormat tf = new SimpleDateFormat("hh:mm a");
            String currentTime = tf.format(Calendar.getInstance().getTime());
            time.setText(currentTime);
            diaryInfo.put("Time", time.getText().toString());

            feeling = spinner.getSelectedItem().toString();
            diaryInfo.put("Feeling", feeling);

            df.set(diaryInfo).addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(Object o) {
                    Toast.makeText(add_diary_user.this, "Data successfully stored", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(add_diary_user.this, diary_user.class));
                    finish();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(add_diary_user.this, e.toString(), Toast.LENGTH_SHORT).show();
                }
            });

        }
    });
private void getDiary() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = fAuth.getCurrentUser();
    String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
    fStore.collection("Users").document(user.getUid()).collection("Diary");
            diary.whereEqualTo("ID", id)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (DocumentSnapshot document : task.getResult()) {
                            // Do something with your retrieved documents
                            dateButton.setText((CharSequence) document.getString("Date"));
                            note.getEditText().setText((CharSequence) document.getString("Note"));
                            symptom.getEditText().setText((CharSequence) document.getString("Symptom"));
                        }
                    }
                }
            });
}
check.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
FirebaseUser=fAuth.getCurrentUser();
字符串uid=user.getUid();
字符串id=fStore.collection(“用户”).document(user.getUid()).collection(“日记”).document().getId();
DocumentReference df=fStore.collection(“用户”).document(user.getUid()).collection(“日记”).document(id);
Map diaryInfo=newhashmap();
put(“症状”,症状.getEditText().getText().toString());
put(“Note”,Note.getEditText().getText().toString());
put(“Date”,dateButton.getText().toString());
diaryInfo.put(“ID”,ID);
SimpleDataFormat tf=新的SimpleDataFormat(“hh:mm a”);
字符串currentTime=tf.format(Calendar.getInstance().getTime());
time.setText(当前时间);
put(“Time”,Time.getText().toString());
feeling=spinner.getSelectedItem().toString();
把(“感觉”,感觉);
addOnSuccessListener(新的OnSuccessListener()){
@凌驾
成功时的公共无效(对象o){
Toast.makeText(添加_dialog_user.this,“数据成功存储”,Toast.LENGTH_SHORT.show();
startActivity(新的意图(添加日志用户.this,日志用户.class));
完成();
}
}).addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常e){
Toast.makeText(添加用户日志,例如toString(),Toast.LENGTH\u SHORT).show();
}
});
}
});
检索Java代码中的数据:

private void setUpRecyclerView() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
    Query query = fStore.collection("Users").document(user.getUid()).collection("Diary").orderBy("Date", Query.Direction.ASCENDING);

    FirestoreRecyclerOptions<ModelClass> options = new FirestoreRecyclerOptions.Builder<ModelClass>()
            .setQuery(query, ModelClass.class)
            .build();

    adapters = new CustomAdapter(options,this);

    adapters.startListening();
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapters);

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,
            ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
        @Override
        public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
            return false;
        }

        @Override
        public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
            adapters.deleteItem(viewHolder.getAdapterPosition());
        }
    }).attachToRecyclerView(recyclerView);


}

@Override
public void onItemClick(final DocumentSnapshot snapshot, int position) {
    final ModelClass diary = snapshot.toObject(ModelClass.class);
    String id = snapshot.getId();
   startActivity(new Intent(diary_user.this,onClickRecyclerViewDiary_user.class));
    Toast.makeText(diary_user.this,"Position: " + position + "ID: " + id,Toast.LENGTH_SHORT).show();

}
check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            FirebaseUser user = fAuth.getCurrentUser();
            String uid = user.getUid();
            String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
            DocumentReference df = fStore.collection("Users").document(user.getUid()).collection("Diary").document(id);
            Map<String, Object> diaryInfo = new HashMap<>();
            diaryInfo.put("Symptom", symptom.getEditText().getText().toString());
            diaryInfo.put("Note", note.getEditText().getText().toString());
            diaryInfo.put("Date", dateButton.getText().toString());
            diaryInfo.put("ID",id);

            SimpleDateFormat tf = new SimpleDateFormat("hh:mm a");
            String currentTime = tf.format(Calendar.getInstance().getTime());
            time.setText(currentTime);
            diaryInfo.put("Time", time.getText().toString());

            feeling = spinner.getSelectedItem().toString();
            diaryInfo.put("Feeling", feeling);

            df.set(diaryInfo).addOnSuccessListener(new OnSuccessListener() {
                @Override
                public void onSuccess(Object o) {
                    Toast.makeText(add_diary_user.this, "Data successfully stored", Toast.LENGTH_SHORT).show();
                    startActivity(new Intent(add_diary_user.this, diary_user.class));
                    finish();
                }
            }).addOnFailureListener(new OnFailureListener() {
                @Override
                public void onFailure(@NonNull Exception e) {
                    Toast.makeText(add_diary_user.this, e.toString(), Toast.LENGTH_SHORT).show();
                }
            });

        }
    });
private void getDiary() {
    fStore = FirebaseFirestore.getInstance();
    FirebaseUser user = fAuth.getCurrentUser();
    String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();
    fStore.collection("Users").document(user.getUid()).collection("Diary");
            diary.whereEqualTo("ID", id)
            .get()
            .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
                @Override
                public void onComplete(@NonNull Task<QuerySnapshot> task) {
                    if (task.isSuccessful()) {
                        for (DocumentSnapshot document : task.getResult()) {
                            // Do something with your retrieved documents
                            dateButton.setText((CharSequence) document.getString("Date"));
                            note.getEditText().setText((CharSequence) document.getString("Note"));
                            symptom.getEditText().setText((CharSequence) document.getString("Symptom"));
                        }
                    }
                }
            });
}
private void getDiary(){
fStore=FirebaseFirestore.getInstance();
FirebaseUser=fAuth.getCurrentUser();
字符串id=fStore.collection(“用户”).document(user.getUid()).collection(“日记”).document().getId();
fStore.collection(“用户”).document(user.getUid()).collection(“日记”);
日记。何处为“ID”,ID)
.get()
.addOnCompleteListener(新的OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()){
对于(DocumentSnapshot文档:task.getResult()){
//对检索到的文档执行一些操作
dateButton.setText((CharSequence)document.getString(“日期”);
note.getEditText().setText((CharSequence)document.getString(“note”);
symptom.getEditText().setText((CharSequence)document.getString(“症状”);
}
}
}
});
}
数据库结构:

输出:


我认为您代码中的问题在于这一行:

String id = fStore.collection("Users").document(user.getUid()).collection("Diary").document().getId();

使用
.document().getId()的位置
但不指定所需的文档,这会使
id
不具有预期值,因此在稍后执行时使用该值的比较中不会得到任何结果。若要修复此问题,您需要将此Id存储在某个位置,并将其作为参数传递给
getDiary()
函数或类似的函数。

此代码中到底有什么不符合预期的工作方式?我的代码没有任何错误,但数据不会显示出来。我已经编辑了我的帖子,现在你可以看到我的输出了。输出1显示RecyclerView,输出2显示当我点击其中一个时,它不会显示数据。所以你是从一个活动转到另一个活动,对吗?是的,它是…..感谢你一直帮助我,现在我知道了。现在我知道问题出在哪里,非常感谢。