为什么arraylist不能添加字符串?

Why arraylist can't add string?

在我的代码中

ArrayList<String> allpromo =new ArrayList<>();

作为全局变量并在 onCreate() 中{}

我写了

database.getReference().child("PromoCodes").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                allpromo.clear();
                for(DataSnapshot snapshot1 : snapshot.getChildren())
                {
                    String val=snapshot1.child("Promo").getValue(String.class);
                    Toast.makeText(getApplicationContext(), val, Toast.LENGTH_SHORT).show();
                    allpromo.add(val);
                }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });


if(allpromo.isEmpty()) {
          Toast.makeText(getApplicationContext(), "0", Toast.LENGTH_SHORT).show();
      }

它向我显示了来自 firebase 的“Promo”的所有内容,但为什么它无法在 arraylist 中添加项目。 因为它吐司“0”。这意味着我的数组列表仍然存在 empty.And 仍然是火力

的吐司项目

但是为什么呢?enter image description here

我的数据库是

database.getReference().child("PromoCodes").addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot snapshot) {
                allpromo.clear();
                for(DataSnapshot snapshot1 : snapshot.getChildren())
                {
                    String val=snapshot1.child("Promo").getValue(String.class);
                    Toast.makeText(getApplicationContext(), val, Toast.LENGTH_SHORT).show();
                    allpromo.add(val);
                }
         if(allpromo.isEmpty()) {
          Toast.makeText(getApplicationContext(), "0", 
                 Toast.LENGTH_SHORT).show();
      }

            }

            @Override
            public void onCancelled(@NonNull DatabaseError error) {

            }
        });