Как я могу отправить несколько текстовых представлений в Firebase с помощью Android Studio - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приложение, и я хочу отправить несколько текстовых обзоров в Firebase одновременно.Однако он отправляет только один текстовый просмотр за один раз в Firebase.Например, у меня есть следующие текстовые представления:

  1. 2 Куриный бургер
  2. 2 Обертка с шашлыком
  3. 1 мороженое
  4. 1 печенье
  5. 1 донер ягнёнка

но когда я отправляю их в Firebase, я получаю это только взамен:

  1. LcSw4gmPVjCS_tSM-ok foodId:
  2. -LcSw4gmPVjCS_tSM-ok "foodOrder:" 1 печенье @ 1,99 фунта стерлингов = 1,99 "

Итак, отправлено только печенье. Остальные 4 просмотра текста не отправляются

Я пыталсяпоэкспериментируйте с конструктором класса, но не могу понять это

это мой класс данных

package com.example.aa1172.the_improved_almighty_project;

public class Data {

    String foodId;
    String foodOrder;

    public Data() {

    }

    public Data(String foodId, String foodOrder) {
        this.foodId = foodId;
        this.foodOrder = foodOrder;
    }

    public String getFoodId() {
        return foodId;
    }

    public String getFoodOrder() {
        return foodOrder;
    }
}

Это мой код для функции отправки данных, этот код находится в моей основной деятельности

    public void send_data() {


        String id = dbref.push().getKey();
        String chicken = varChickenBurgerTotal.getText().toString();
        String kebab = varkebabTotal.getText().toString();
        String lamb = varLambDonerTotal.getText().toString();
        String biscuits = varBiscuitsTotal.getText().toString();
        String icecream = varIceCreamTotal.getText().toString();


        if (!TextUtils.isEmpty(chicken) || !TextUtils.isEmpty(kebab) || !TextUtils.isEmpty(icecream) || !TextUtils.isEmpty(biscuits) || !TextUtils.isEmpty(lamb)) {
            Toast.makeText(this, "Food order sent", Toast.LENGTH_LONG).show();


            // switch (!TextUtils.isEmpty(chicken) || !TextUtils.isEmpty(kebab) || !TextUtils.isEmpty(icecream) || !TextUtils.isEmpty(biscuits) || !TextUtils.isEmpty(lamb))


            if (!TextUtils.isEmpty(chicken)) {


                Data mydata = new Data(id, chicken);

                dbref.child(id).setValue(mydata);


            }

            if (!TextUtils.isEmpty(kebab)) {


                Data mydata = new Data(id, kebab);

                dbref.child(id).setValue(mydata);


            }
            if (!TextUtils.isEmpty(lamb)) {


                Data mydata = new Data(id, lamb);

                dbref.child(id).setValue(mydata);


            }
            if (!TextUtils.isEmpty(icecream)) {


                Data mydata = new Data(id, icecream);

                dbref.child(id).setValue(mydata);


            }
            if (!TextUtils.isEmpty(biscuits)) {


                Data mydata = new Data(id, biscuits);

                dbref.child(id).setValue(mydata);


            }

        } else {
            Toast.makeText(this, "No order is being sent", Toast.LENGTH_LONG).show();
        }


    }

Мне нужно, чтобы все текстовые представления отправлялись в базу данных Firebase, когда я нажимал кнопку отправки, все одновременно. Спасибо

Ответы [ 3 ]

2 голосов
/ 15 апреля 2019

Чтобы сделать только один вызов в базу данных, вы можете сделать это:

if (!TextUtils.isEmpty(chicken)) {
    mydata = new Data(id, chicken);
}
if (!TextUtils.isEmpty(kebab)) {
    mydata = new Data(id, kebab);
}
if (!TextUtils.isEmpty(lamb)) {
    mydata = new Data(id, lamb);
}
if (!TextUtils.isEmpty(icecream)) {
    mydata = new Data(id, icecream);
}
if (!TextUtils.isEmpty(biscuits)) {
    mydata = new Data(id, biscuits);
}

if (mydata != null) {
    dbref.child(id).setValue(mydata);
    Toast.makeText(this, "Food order sent", Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(this, "No order is being sent", Toast.LENGTH_LONG).show();
}

Это будет устанавливать только один тип элемента, поскольку ваш класс Data может содержать только один тип.

Если вы хотите сохранить несколько типов элементов, вам придется либо изменить класс Data, либо сохранить несколько Data объектов.Последний является наиболее гибким, поэтому вы можете сделать это с помощью:

List<Data> orders = new List<Data>();
if (!TextUtils.isEmpty(chicken)) {
    orders.add(new Data(id, chicken));
}
if (!TextUtils.isEmpty(kebab)) {
    orders.add(new Data(id, kebab));
}
if (!TextUtils.isEmpty(lamb)) {
    orders.add(new Data(id, lamb));
}
if (!TextUtils.isEmpty(icecream)) {
    orders.add(new Data(id, icecream));
}
if (!TextUtils.isEmpty(biscuits)) {
    orders.add(new Data(id, biscuits));
}

System.out.println("Got "+orders.size()+" orders");
if (orders.size() > 0) {
    dbref.child(id).setValue(orders);
    Toast.makeText(this, "Food order sent", Toast.LENGTH_LONG).show();
} else {
    Toast.makeText(this, "No order is being sent", Toast.LENGTH_LONG).show();
}
0 голосов
/ 15 апреля 2019

В вашем Data.class есть только два конструктора. Попробуйте следовать ответу Prafulla Nayak, и это будет сделано. Также в вашем Data.class у вас есть FoodOrder, который является строкой. Если вы хотите поместить в список массив, попробуйте использовать список <>.

0 голосов
/ 15 апреля 2019

Создайте класс данных, подобный этому.

 public class Data {

    String chicken;
    String kebab;
    String lamb;
    String biscuits;
    String icecream;

    public Data() {

    }

    public Data(String chicken, String kebab, String lamb, String biscuits,      String icecream) {
        this.chicken = chicken;
        this.kebab = kebab;
        this.lamb= lamb;
        this.biscuits= biscuits;
        this.icecream = icecream;

    }

    //set here getter and setter method
}

, а затем

 public void send_data() {

   //You can validate your data here as well. On succesfully validation
   //create new object of Data and push it frebase
   Data mydata = new Data("chicken 5 kg", "kebab 5 kg", "lamb 5 kg", "biscuit 2 pkt", "icecream 300gm")


    String id = dbref.push().getKey();
    dbref.child(id).setValue(mydata);

}

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...