Я пытаюсь выполнить действие, которое показывает классы и перечисляет их в обзоре переработчика. Тем не менее, у меня возникла проблема с запросом моих данных из Firebase. Я объясню больше после того, как я покажу свою структуру базы данных. Вот моя структура базы данных:
"Classes": {
"-Li9nBUgnFmCWqUmwV5W": {
"class_info": {
"date_clasname": "August 6, 2019",
"room_number": "131",
"subject": "Science",
"teacher": "Ms.Henry",
"id": "-Li9nBUgnFmCWqUmwV5W"
}
},
"-Li9n_IYwbTNPdNAsTAu": {
"class_info": {
"date_clasname": "August 6, 2019",
"room_number": "131",
"subject": "Math",
"teacher": "Ms.Henry",
"id": "-Li9n_IYwbTNPdNAsTAu"
}
},
"-Li9naUipsa865NBpZjW": {
"class_info": {
"date_clasname": "August 6, 2019",
"room_number": "131",
"subject": "Other",
"teacher": "Ms.Henry",
"id": "-Li9naUipsa865NBpZjW"
}
},
"-Li9nbpwp2qchwmZRDP9": {
"class_info": {
"date_clasname": "August 6, 2019",
"room_number": "131",
"subject": "Technology",
"teacher": "Ms.Henry",
"id": "-Li9nbpwp2qchwmZRDP9"
}
},
"-Li9ne0NDyjcB4SIWi1z": {
"class_info": {
"date_clasname": "August 6, 2019",
"room_number": "131",
"subject": "Social Studies",
"teacher": "Ms.Henry",
"id": "-Li9ne0NDyjcB4SIWi1z"
}
}
},
Я пытаюсь запросить классы по предмету и показать только те, чей предмет - «Наука». Я пробовал разные вещи, но до сих пор не могу понять, как это сделать. Вот код моей деятельности:
public class Science_classes extends AppCompatActivity {
private FirebaseDatabase database;
private DatabaseReference myRef, newmf;
private List<Listdata> list;
private RecyclerView recyclerview;
String class_value = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_science_classes);
recyclerview = (RecyclerView) findViewById(R.id.rview);
database = FirebaseDatabase.getInstance();
myRef = database.getReference("Classes");
myRef.addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
String id = dataSnapshot.getKey();
Query query = myRef.child(id).child("class_info").orderByChild("subject").equalTo("Science");
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.getChildren()) {
Class_model new_class = dataSnapshot1.getValue(Class_model.class);
String nameofclass = new_class.getDate_clasname();
String teacherofclass = new_class.getTeacher();
String roomnumberofclass = new_class.getRoom_number();
String class_key = new_class.getUid();
Listdata listdata = new Listdata(nameofclass, teacherofclass, roomnumberofclass, class_key);
//String name = userdetails.getName();
//String email = userdetails.getEmail();
//String address = userdetails.getAddress();
listdata.setDate_class(nameofclass);
listdata.setTeacher(teacherofclass);
listdata.setRnumber(roomnumberofclass);
list.add(listdata);
}
RecyclerviewAdapter2 recycler = new RecyclerviewAdapter2(list);
RecyclerView.LayoutManager layoutmanager = new LinearLayoutManager(Science_classes.this);
recyclerview.setLayoutManager(layoutmanager);
recyclerview.setItemAnimator(new DefaultItemAnimator());
recyclerview.setAdapter(recycler);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
@Override
public void onChildChanged(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onChildRemoved(@NonNull DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(@NonNull DataSnapshot dataSnapshot, @Nullable String s) {
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
}
Я думаю, что моя проблема может заключаться в том, что я не могу получить случайно сгенерированный идентификатор и установить его как мой ребенок перед моим другим дочерним "class_info" в моем onChildAdded.
Спасибо!