Добавить данные в одно поле в Cloud Firestore в Android Studio

186
11 июля 2018, 18:10

Я новичок в андроид разработке. У меня вопрос. Можно ли добавлять данные в одно поле с разными названиями в 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" в базе при создании поле. Спасибо.

Answer 1

Вопрос решен. В обработчике, вместо

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();
                    }
                }
            });
        }
    });

Результат:

READ ALSO
Из Java FX в Maven

Из Java FX в Maven

Требуется собрать приложениеПри создании проекта выбирал java fx

136
Java 8, Stream API, Generics что я упустил?

Java 8, Stream API, Generics что я упустил?

Что я упустил в дженериках? Эта конструкция валидна, но убирая дженерик у стрима Stream stream = liststream(); уже не валидна?

160
Socket или Long polling в андроид ява

Socket или Long polling в андроид ява

Всем приветВ приложении хочу сделать чат администрации

186
Переход из одного фрагмента в другой при нажатии на кнопку в listview

Переход из одного фрагмента в другой при нажатии на кнопку в listview

У меня есть listvew с кастамным адаптером, в котором находится Textview, CheckBox и кнопкаЯ хочу чтобы при нажатии на imaginbutton imbutUpd, фрагмент где находится...

174