Java 这是否可能仅显示实时Firebase数据库的某些特定子值的列表视图

Java 这是否可能仅显示实时Firebase数据库的某些特定子值的列表视图,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我已经创建了这个数据库,并希望显示专门针对子可用性的列表:“可用”项。通过这段代码,我几乎达到了目标 public class Homeuser extends AppCompatActivity { SharedPreferences preferences; SharedPreferences.Editor editor; ListView lv; FirebaseListAdapter adapter; @Override protected void onCreate(Bundle

我已经创建了这个数据库,并希望显示专门针对子可用性的列表:“可用”项。通过这段代码,我几乎达到了目标

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());}
        }

    };}}
公共类Homeuser扩展AppCompative活动{
共享参考偏好;
SharedReferences.Editor;
ListView lv;
FirebaseListAdapter;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u homeuser);
最终可控震源vibeuser=(可控震源)Homeuser.this.getSystemService(Context.可控震源\u服务);
preferences=PreferenceManager.getDefaultSharedPreferences(此);
editor=preferences.edit();
Query Query=FirebaseDatabase.getInstance().getReference().child(“食物”);
lv=findViewById(R.id.list\U项);
FirebaseListOptions=new FirebaseListOptions.Builder()
.setLayout(R.layout.list_项).setLifecycleOwner(Homeuser.this)
.setQuery(query,food.class).build();
适配器=新FirebaseListAdapter(选项)
{
@凌驾
受保护的void populateView(视图v、对象模型、int位置){
text查看项目名称、项目价格、效用;
itemname=v.findviewbyd(R.id.itemname);
itemprice=v.findViewById(R.id.itemprice);
avail=v.findViewById(R.id.avail);
食品项目食品=(食品)模型;
if(itemFood.getAvailability().toString().equals(“Available”)){
itemname.setText(itemFood.getFooditemname().toString());
itemprice.setText(itemFood.getFooditemprice().toString());
avail.setText(itemFood.getAvailability().toString());}
}
};}}
但面临这样一个问题:


如何摆脱这个?谢谢。

如果要筛选Firebase数据库记录,应在
populateView()
方法中使用查询以及
whereEqual()
调用和notIf语句。因此,要解决此问题,请更改以下代码行:

Query query = FirebaseDatabase.getInstance().getReference().child("food");


然后删除if语句。

您要删除的元素是什么?@AlexMamo列表视图包含我不想在此活动中显示的空行(状态为“不可用”)。我现在明白了,我现在给您写一个答案。
Query query = FirebaseDatabase.getInstance().getReference()
    .child("food")
    .orderByChild("availability")
    .equalTo("Available");