我有一个用于食物价格的范围滑块,根据该滑块的最小值和最大值,我想显示该范围内的食物。
滑子代码
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,但是它显示的食物价格超出范围。对此有任何帮助吗?还有另一种方式进行这种查询吗?
答案 0 :(得分:1)
您正在将数字值作为字符串存储在数据库中。 Firebase按字典顺序对字符串进行排序。按照您的字典顺序,数字从1到12,它们被排序为"1", "10", "11", "12", "2", "3", "4", "5", "6", "7", "8", "9"
。因此,从"1"
到"10"
的范围正是这两个“数字”。
要解决此问题,请将数值作为实际数字存储在数据库中。
另请参阅: