Пытаюсь поискать в 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);
}
(Может ли быть так, что исходный список, который должен загружаться вместе с действием, перезаписывает список, который должен быть напечатан после поиска?) Я попытался отладить (опять же, ничего сложного я не получаю)не очень хорошо) и похоже, что эти строки никогда не выполняются ...