I want to search items by their names using Material SearchBar Android Github, also I want that when I search only "bihari" it give me food item of "Bihari Boti" its means it should not case sensitive.
Please help me and guide me how can I search any item by using their name.
Here is my Items.class (model class) :
public class Items {
String name, desc,image, category;
int price;
boolean pin;
public Items(String name, String desc, String image, String category, int price, boolean pin) {
this.name = name;
this.desc = desc;
this.image = image;
this.category = category;
this.price = price;
this.pin = pin;
}
public Items() {
}
public boolean isPin() {
return pin;
}
public void setPin(boolean pin) {
this.pin = pin;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
this is my search bar code :
binding.searchBar.setOnSearchActionListener(new SimpleOnSearchActionListener() {
@Override
public void onSearchStateChanged(boolean enabled) {
super.onSearchStateChanged(enabled);
}
@Override
public void onSearchConfirmed(CharSequence text) {
super.onSearchConfirmed(text);
Intent intent = new Intent(MainActivity.this,SearchActivity.class);
intent.putExtra("query",text.toString());
startActivity(intent);
}
@Override
public void onButtonClicked(int buttonCode) {
super.onButtonClicked(buttonCode);
}
});
this is my database code :
list = new ArrayList<>();
binding.searchRecView.setLayoutManager(new LinearLayoutManager(this));
adapter = new PinAdapter(this, list);
binding.searchRecView.setAdapter(adapter);
DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("admin");
Query search = reference.orderByChild("name").startAt(query).endAt(query+"\uf8ff");
search.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
list.getClass();
for (DataSnapshot categorySnapshot : snapshot.getChildren()) {
for (DataSnapshot itemSnapshot : categorySnapshot.getChildren()) {
Items items = itemSnapshot.getValue(Items.class);
list.add(items);
}
}
adapter.notifyDataSetChanged();
Toast.makeText(SearchActivity.this, list.toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});