После ввода поискового запроса результата нет (диалог поиска) - PullRequest
0 голосов
/ 02 декабря 2018

Пытаюсь поискать в firebase на очень низком уровне, ничего сложного.Я сделал плавающую кнопку действия, которая вызывает onSearchRequested (), и появляется диалог поиска.Однако, если я пытаюсь что-то написать в диалоге и нажимаю ввод, абсолютно ничего не происходит.Это мой код:

        //searchable
    Intent intent = getIntent();
    if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
        final String query = intent.getStringExtra(SearchManager.QUERY);
        //doMySearch(query);
        searchReference = FirebaseDatabase.getInstance().getReference().child("offers").child(userCountry).child(userCity);
        ValueEventListener searchListener = new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                ArrayList<Offer> searchlist = new ArrayList<>();
                for (DataSnapshot childDataSnapshot : dataSnapshot.getChildren()) {
                    String storeName = childDataSnapshot.child("store_name").getValue(String.class);
                    String offerTitle = childDataSnapshot.child("offer_title").getValue(String.class);
                    String category = childDataSnapshot.child("category").getValue(String.class);
                    String price = childDataSnapshot.child("price").getValue(String.class);
                    if (storeName.toLowerCase().contains(query.toLowerCase()) || offerTitle.toLowerCase().contains(query.toLowerCase()) || category.toLowerCase().contains(query.toLowerCase())) {
                        Offer offer = new Offer(storeName, offerTitle, price, category);
                        //add this to custom array adapter
                        searchlist.add(offer);
                        //create adapter
                        OfferAdapter adapter = new OfferAdapter(OffersFeedActivity.this, searchlist);
                        listView.setAdapter(adapter);
                    }
                }
            }

            @Override
            public void onCancelled(@NonNull DatabaseError databaseError) {

            }
        };
        searchReference.addValueEventListener(searchListener);
    } 

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

...