#java #android #firebase #android-studio #firebase-realtime-database
#java #Android #firebase #android-studio #firebase-realtime-database
Вопрос:
Я попытался реализовать код на Java для извлечения данных из базы данных (firebase) путем поиска по идентификатору и отображения его в форме.
Здесь я уже сохранил некоторые данные, и теперь, когда я ввожу идентификатор, ему необходимо отобразить данные идентификатора в этой же форме.
btnShow.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
searchID = txtid.getText().toString().trim();
DatabaseReference readRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference dref = readRef.child("Student");
Query query = dref.orderByChild("id").equalTo(searchID);
query.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
if(dataSnapshot.hasChildren()){
txtID.setText((dataSnapshot.child("id").getValue().toString()));
txtName.setText((dataSnapshot.child("name").getValue().toString()));
txtAdd.setText((dataSnapshot.child("address").getValue().toString()));
txtConNo.setText((dataSnapshot.child("conNo").getValue().toString()));
}
else
Toast.makeText(getApplicationContext(),"No Source to Display",Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}
});
Это java-код, который я реализовал для этого. Но когда я запускаю программу и указываю правильный идентификатор в базе данных, он всегда отображается как «Нет источника для отображения» (в моей базе данных есть данные, и функция сохранения работает должным образом)
Я новичок в Android Studio и firebase. Пожалуйста, измените приведенный выше код и скажите мне, как я могу выполнять поиск по идентификатору.
Спасибо.
Комментарии:
1. добавьте скриншот вашей базы данных
2. Добавлена база данных, сэр
Ответ №1:
Попробуйте следующее:
if(dataSnapshot.exists()){
for(DataSnapshot ds : dataSnapshot.getChildren()){
txtID.setText((ds.child("id").getValue().toString()));
txtName.setText((ds.child("name").getValue().toString()));
txtAdd.setText((ds.child("address").getValue().toString()));
txtConNo.setText((ds.child("conNo").getValue().toString()));
}
}
Ваша ссылка находится на узле, Student
поэтому вам нужно выполнить цикл, а затем использовать ds
для доступа к атрибутам. Кроме того, не забудьте проверить наличие ошибок внутри onCancelled
:
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.d("TAG", databaseError.getMessage()); //Don't ignore potential errors!
}
Комментарии:
1. Как мы можем реализовать код для обновления и удаления вышеупомянутого сценария. Обратитесь за помощью.
2. Вам нужно использовать updatechildren.. Пожалуйста, задайте другой вопрос с требуемыми подробностями