Использование orderbychild.equalTo () не может получить данные firebase

это логин: это страница добавления еды:
Использование orderbychild.equalTo () не может получить данные firebaseИспользование orderbychild.equalTo () не может получить данные firebase

код:
Использование orderbychild.equalTo () не может получить данные firebase

мои правила firebase:
Использование orderbychild.equalTo () не может получить данные firebase

мои данные firebase:
Использование orderbychild.equalTo () не может получить данные firebase

Вот мой код FoodInfo:

import com.google.firebase.database.IgnoreExtraProperties;

@IgnoreExtraProperties

public class FoodInfo {

public String foodname, foodprice, fooddesc, imageUrl, storename;

public FoodInfo(){

}




public FoodInfo(String foodname, String foodprice, String fooddesc, String imageUrl, String storename ) {
    this.foodname = foodname;
    this.foodprice = foodprice;
    this.fooddesc = fooddesc;
    this.imageUrl = imageUrl;
    this.storename = storename;


}

public String getFoodname() {
    return foodname;
}

public String getFoodprice() {
    return foodprice;
}

public String getFooddesc() {
    return fooddesc;
}

public String getImageUrl() {
    return imageUrl;
}

public String getStorename() {
    return storename;
}

public void setFoodname(String foodname) {
    this.foodname = foodname;
}

public void setFoodprice(String foodprice) {
    this.foodprice = foodprice;
}

public void setFooddesc(String fooddesc) {
    this.fooddesc = fooddesc;
}

public void setImageUrl(String imageUrl) {
    this.imageUrl = imageUrl;
}
}

Текстовое представление на странице добавления еды будет получать данные из редактируемого текста "введите адрес электронной почты", я использую

Intent intent = getIntent();
String StoreName = intent.getStringExtra ("Storename");

Теперь моя проблема в том, что когда я нажимаю кнопку меню (которая является страницей добавления еды), я хочу, чтобы отображались только данные, у которых есть тот же дочерний элемент с текстовым просмотром (на странице добавления еды там). Итак, я использую orderbychild, это правильно?

И я поместил Storename в equalTo (), но это не работает. И каждый раз, когда я нажимаю кнопку меню, отображается сообщение «Использование неуказанного индекса. Рассмотрите возможность добавления '" .indexOn ":" storename "' в FoodInfo в правила безопасности и базы данных Firebase для повышения производительности»

на самом деле теперь все продавцы используют один и тот же рециклпросмотр, поэтому, когда я нажимаю кнопку меню, я хочу, чтобы отображались только данные, добавленные этим продавцом, поэтому я передаю имя продавца, чтобы добавить страницу с едой и сохранить ее в Firebase FoodInfo

Choy 19.05.2018 06:19

Пожалуйста, добавьте свой код к самому вопросу.

Edric 19.05.2018 16:23
1
2
289
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Заказ по ребенку должен работать нормально. Вы можете проверить по -

    Log.i("Value", dataSnapshot.getValue().toString());

Если ваше намерение работает правильно, то есть в запросе должно быть указано имя хранилища как "Gg". Вы получите необходимые данные.

Значит, проблема может быть в модели (FoodInfo.class). Так поделитесь моделью (FoodInfo.class) ..

я уже добавил коды FoodInfo.class

Choy 19.05.2018 06:13

какой результат это дает? Log.i ("Значение", dataSnapshot.getValue (). ToString ());

Raj 19.05.2018 09:20

где я должен поместить этот код?

Choy 19.05.2018 09:23

query.addChildEventListener (новый ChildEventListener () {@Override public void onChildAdded (DataSnapshot dataSnapshot, String s) {Toast.makeText (this, «Значение» + dataSnapshot.getValue (). toString, Toast.LENGTHw_SHORT); Log. .i ("Значение", dataSnapshot.getValue (). toString ());} и прокомментируйте эту строку mfoodInfo.add (dataSnapshot.getValue (FoodInfo.class));

Raj 19.05.2018 09:38

sry, я новичок в студии Android, в этом коде Toast.makeText (this, "Value" + dataSnapshot.getValue (). toString, Toast.LENGTH_SHORT) .show (); .toString нужно правильно поместить (), после того, как положить (), что я должен поместить внутрь ()

Choy 19.05.2018 10:04

Запрос query = databaseReference.orderByChild ("имя хранилища"). EqualTo (StoreNam‌ e); query.addChildEventListener (new ChildEventListener () {@Override public void onChildAdded (DataSnapshot dataSnapshot, String s) {mfoodinfo.add (dataSnapshot.getValue (FoodInfo.class)); Toast.makeText (this, "Value.getSnapshot" + dataV ) .toString (), Toast.LENGTH_SHORT) .show (); Log.i ("Значение", dataSnapshot.getValue (). toString ());}

Choy 19.05.2018 10:08

какой результат вы получаете?

Raj 19.05.2018 10:47

Невозможно восстановить метод makeText (анонимный com.google.firebase.database.ChildEventListner, java.lang, str ing, int)

Choy 19.05.2018 11:47

не могли бы вы дать мне свой адрес электронной почты? так как я не могу получить никаких уведомлений, если я не открывал переполнение стека

Choy 19.05.2018 11:52

я уже написал тебе по электронной почте

Choy 19.05.2018 17:18

добавить foodAdapter.notifyDataSetChanged (); onChildAdded после mfoodinfo.add (dataSnapshot.getValue (FoodInfo.class)); и твоя проблема будет решена

Raj 19.05.2018 18:45

это работает, тк для спасения моей жизни

Choy 19.05.2018 19:04

Другие вопросы по теме