Второе значение , которое вы передаете на setValue
, устанавливается как приоритет узла. Этот приоритет не отображается в консоли Firebase, но он сохраняется и извлекается через API. Если вы получите DataSnapshot
для узла, вы можете использовать getPriority()
, чтобы вернуть desc
.
Приоритеты в основном являются пережитком старых дней этого API, и в наши дни служат очень мало полезной цели.
В настоящее время, если вы хотите сохранить несколько значений под узлом, вы должны дать им имена. Например:
final String name = subjectEditText.getText().toString();
final String desc = descEditText.getText().toString();
String DateNow = new SimpleDateFormat("ddmmyyyy", Locale.getDefault()).format(new Date());
FirebaseDatabase database = FirebaseDatabase.getInstance();
DatabaseReference myRef = database.getReference("products/" + DateNow);
Map<String, Object> values = new HashMap<>();
values.put("name", name);
values.put("desc", desc);
myRef.setValue(values);
Это создаст небольшую структуру JSON под DateNow
с:
{
"name": "the name from the text field",
"desc": "the value from the desc field"
}
Затем вы можете прочитать это значение с помощью:
myRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
Log.i("database", dataSnapshot.child("name").getValue(String.class);
Log.i("database", dataSnapshot.child("desc").getValue(String.class);
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException();
}
}