Я новичок в андроид разработке. У меня вопрос. Можно ли добавлять данные в одно поле с разными названиями в Cloud Firestore в Android Studio? Например пользователь вводит свое имя и выбирает район в Spinner-е и нажимает "Добавить". Данные должны попасть в одну коллекцию и поле в Cloud Firestore. В коде ниже указан способ добавления данных в разные коллекции:
btn_setData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, String> nameMap = new HashMap<>();
Map<String, String> spinnerMap = new HashMap<>();
nameMap.put("name", et_setName.getText().toString());
spinnerMap.put("district", sp_selectDistrict.getSelectedItem().toString());
mFirestore.collection("users").document().set(nameMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(SelectLocationActivity.this, "Запись прошла успешно", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(SelectLocationActivity.this, "Запись не удалась", Toast.LENGTH_SHORT).show();
}
}
});
mFirestore.collection("users_district").document().set(spinnerMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(SelectLocationActivity.this, "Запись прошла успешно", Toast.LENGTH_SHORT).show();
}
}
});
}
});
Можно ли объединить эти два действия? Или с типом "Object" в базе при создании поле. Спасибо.
Вопрос решен. В обработчике, вместо
Map <String, String>
указываем что хотим поместить параметры в тип object
Map<String, Object>
в Cloud Firestore. Определяем один HashMap и вставляем туда et_setName, sp_selectDistrict (EditText, Spinner):
btn_setData.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Map<String, Object> userDataMap = new HashMap<String, Object>();
userDataMap.put("name", et_setName.getText().toString());
userDataMap.put("district", sp_selectDistrict.getSelectedItem().toString());
mFirestore.collection("user_data").document().set(userDataMap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if(task.isSuccessful()){
Toast.makeText(SelectLocationActivity.this, "Запись прошла успешно", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(SelectLocationActivity.this, "Запись не удалась", Toast.LENGTH_SHORT).show();
}
}
});
}
});
Результат:
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Что я упустил в дженериках? Эта конструкция валидна, но убирая дженерик у стрима Stream stream = liststream(); уже не валидна?
У меня есть listvew с кастамным адаптером, в котором находится Textview, CheckBox и кнопкаЯ хочу чтобы при нажатии на imaginbutton imbutUpd, фрагмент где находится...