возможно ли показывать только представление списка для некоторого определенного дочернего значения базы данных Firebase в реальном времени - PullRequest
1 голос
/ 01 июля 2019

Я создал эту базу данных введите здесь описание изображения и хочу показать список специально для наличия детей: элемент «Доступен».Я почти достиг цели с помощью этого кода

public class Homeuser extends AppCompatActivity {

SharedPreferences preferences;
SharedPreferences.Editor editor;
ListView lv;

FirebaseListAdapter adapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_homeuser);

    final Vibrator vibeuser = (Vibrator) Homeuser.this.getSystemService(Context.VIBRATOR_SERVICE);

    preferences = PreferenceManager.getDefaultSharedPreferences(this);
    editor = preferences.edit();

    Query query = FirebaseDatabase.getInstance().getReference().child("food");
    lv = findViewById(R.id.list_item);
    FirebaseListOptions<food> options = new FirebaseListOptions.Builder<food>()
            .setLayout(R.layout.list_items).setLifecycleOwner(Homeuser.this)
            .setQuery(query,food.class).build();

    adapter = new FirebaseListAdapter(options)
    {
        @Override
        protected void populateView(View v, Object model, int position) {
            TextView itemname, itemprice, avail;

            itemname = v.findViewById(R.id.itemname);
            itemprice = v.findViewById(R.id.itemprice);
            avail = v.findViewById(R.id.avail);

            food itemFood = (food) model;

            if(itemFood.getAvailability().toString().equals("Available")){
            itemname.setText(itemFood.getFooditemname().toString());
            itemprice.setText(itemFood.getFooditemprice().toString());
            avail.setText(itemFood.getAvailability().toString());}
        }

    };}}

Но сталкиваюсь с такой проблемой:

введите описание изображения здесь как от этого избавиться?Спасибо.

1 Ответ

1 голос
/ 01 июля 2019

Если вы хотите фильтровать записи базы данных Firebase, вы должны использовать запрос вместе с вызовом whereEqual() и , а не оператором if внутри вашего populateView() метода.Чтобы решить эту проблему, измените следующую строку кода:

Query query = FirebaseDatabase.getInstance().getReference().child("food");

на

Query query = FirebaseDatabase.getInstance().getReference()
    .child("food")
    .orderByChild("availability")
    .equalTo("Available");

И удалите оператор if.

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