当前位置: 首页 > 知识库问答 >
问题:

是否可以仅显示实时Firebase数据库的某些特定子值的列表视图保存

楚俊逸
2023-03-14

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

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

    };}}

但是面临这样一个问题:

在此处输入图像描述如何消除此问题?非常感谢。

共有1个答案

曾绯辞
2023-03-14

如果您想过滤Firebase数据库记录,您应该使用查询以及地平等()调用,而不是人口视图()方法中的if语句。因此要解决这个问题,请更改以下代码行:

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

Query query = FirebaseDatabase.getInstance().getReference()
    .child("food")
    .orderByChild("availability")
    .equalTo("Available");

并删除if语句。

 类似资料:
  • 有没有办法将所有子节点检索到textView?,我想创建一个用户日志,您可以在其中跟踪用户进行了何种交易,但我不知道如何获取节点及其子节点列表。 目前为止的代码:

  • 应用程序运行良好...只是数据没有出现...我已经添加了sha用户电子邮件显示在登录后,在登录活动中我已经添加了 但是在实时数据库数据不显示以防万一…我也等了半个小时,尝试了所有的东西…网络也不错。数据库中的数据库规则的数据库图片 mainActivity.java//不能用于单个子级,即firebaseDatabase.getInstance().getReference().child(“aj

  • 我创建了一个剧本,使用“yum”ansi ble模块检查一个包是否安装在基于RHEL的服务器上,然后显示结果。 我的任务如下: roles/Linux/yum check/tasks/main . yml 剧本以以下格式正确输出结果:; yum列表模块还将显示“可用”包。当使用作为多个可用包的包名(如python)运行此playbook时,输出可能会变得非常长。我的目标是让playbook只输出某

  • 我在Vue中有一个(父)组件,它有自己的屏幕键盘,在它自己的Vue组件中。键盘跟踪输入的值,并将该值传递给父组件。有时父组件需要重置该值。 它当前的实现方式是直接修改传递到键盘的道具。这显然会产生警告。然而,这正是我在本例中所期望的行为:变量是同步的,如果父级更改了值,则应保持同步。换句话说:我想禁用此特定组件的此特定警告。 我可以在覆盖局部变量的属性中添加一个观察者,并使用局部变量来跟踪事件。那

  • 问题内容: 我已经阅读了关于此的所有问题,但仍然没有找到答案。因此,请勿将其标记为重复项。 我正在将AngularFire与Angular 2和Typescript一起使用。我正在使用从端点提取24条最近记录的列表。这是我的代码: 如预期的那样,这将返回24个最新故事的列表,但是当我使用以下命令将它们呈现在页面上时: 它在顶部显示最旧的故事,在底部显示最新的故事。我了解为什么会这样,但我并不是说这