我已经创建了此数据库enter image description here,并希望显示专门针对子级可用性的列表:“可用”项。通过此代码,我几乎达到了目标
public class Homeuser extends AppCompatActivity {
SharedPreferences preferences;
SharedPreferences.Editor editor;
ListView lv;
FirebaseListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_homeuser);
final Vibrator vibeuser = (Vibrator) Homeuser.this.getSystemService(Context.VIBRATOR_SERVICE);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
editor = preferences.edit();
Query query = FirebaseDatabase.getInstance().getReference().child("food");
lv = findViewById(R.id.list_item);
FirebaseListOptions<food> options = new FirebaseListOptions.Builder<food>()
.setLayout(R.layout.list_items).setLifecycleOwner(Homeuser.this)
.setQuery(query,food.class).build();
adapter = new FirebaseListAdapter(options)
{
@Override
protected void populateView(View v, Object model, int position) {
TextView itemname, itemprice, avail;
itemname = v.findViewById(R.id.itemname);
itemprice = v.findViewById(R.id.itemprice);
avail = v.findViewById(R.id.avail);
food itemFood = (food) model;
if(itemFood.getAvailability().toString().equals("Available")){
itemname.setText(itemFood.getFooditemname().toString());
itemprice.setText(itemFood.getFooditemprice().toString());
avail.setText(itemFood.getAvailability().toString());}
}
};}}
但是面临这样的问题:
enter image description here如何摆脱这种情况?谢谢。
答案 0 :(得分:1)
如果您要过滤Firebase数据库记录,则应在whereEqual()
方法内使用查询以及populateView()
调用和不 if语句。因此,要解决此问题,请更改以下代码行:
Query query = FirebaseDatabase.getInstance().getReference().child("food");
到
Query query = FirebaseDatabase.getInstance().getReference()
.child("food")
.orderByChild("availability")
.equalTo("Available");
并删除if语句。