【发布时间】:2019-03-14 16:23:40
【问题描述】:
我有一个食品价格范围滑块,根据滑块的最小值和最大值,我想显示此范围内的食品。
滑块代码
multiSlider.setOnThumbValueChangeListener(new MultiSlider.SimpleChangeListener() {
@Override
public void onValueChanged(MultiSlider multiSlider, MultiSlider.Thumb thumb, int thumbIndex, int value) {
if (thumbIndex == 0) {
min = String.valueOf(value);
min1.setText(min);
} else {
max = String.valueOf(value);
max1.setText(max);
}
}
});
alertD.setPositiveButton("Done", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
SearchPrice(min, max);
}
});
查询代码
private void SearchPrice(String min, String max) {
Query searchByName = foodList.orderByChild("price").startAt(min).endAt(max);
FirebaseRecyclerOptions<Food> foodOptions = new FirebaseRecyclerOptions.Builder<Food>().setQuery(searchByName, Food.class).build();
Searchadapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(foodOptions) {
@Override
protected void onBindViewHolder(@NonNull FoodViewHolder viewHolder, int position, @NonNull Food model) {
viewHolder.food_name.setText(model.getName());
viewHolder.food_price.setText(model.getPrice());
结构
我尝试使用 startAt 和 endAt ,但它显示的食物价格超出了范围。请问有什么帮助吗?是否有其他方法可以进行此类查询?
【问题讨论】:
-
添加 firebase 数据库结构可能会帮助我们为您提供帮助?
-
您还应该简化您发布的查询代码。尝试只选择与 firebase readtime 数据库查询有关的代码
-
请看一下,我添加了结构。
-
@StefanoTokyo 现在返回什么?什么是最小值 - 最大值?你会添加整个查询和 min -max 的值吗?但是,我认为您错过了:
orderByKey()在 startAt 和 ... 之前 -
我的第一个猜测是你有
min和max作为数字,而你数据库中price的值是一个字符串。如果是这个原因,试试foodList.orderByChild("price").startAt(""+min).endAt(""+max)
标签: android firebase firebase-realtime-database