为了账号安全,请及时绑定邮箱和手机立即绑定

在 Android 活动中从 Firebase 检索数据

在 Android 活动中从 Firebase 检索数据

MYYA 2021-09-29 16:19:59
我阅读了许多关于如何从 Firebase 数据库实例获取数据的线程,但没有一个对我有用。我在活动中的代码:public class Violations extends AppCompatActivity{TextView textView7;FirebaseDatabase database = FirebaseDatabase.getInstance();DatabaseReference dbref = database.getReference("save");@Overrideprotected void onCreate(Bundle savedInstanceState){    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_violations);    textView7 = findViewById(R.id.textView7);    dbref.addValueEventListener(new ValueEventListener()    {        ArrayList<String> Violations = new ArrayList<>();        @Override        public void onDataChange(DataSnapshot dataSnapshot)        {            for (DataSnapshot postSnapshot: dataSnapshot.getChildren())            {                Violations.add(postSnapshot.getValue().toString());                System.out.println(postSnapshot.getValue().toString());            }            for(int i=0; i < Violations.size(); i++)            {                textView7.setText(textView7.getText() + Violations.get(i) + System.lineSeparator());            }        }        @Override        public void onCancelled(DatabaseError databaseError) {}    });}}那里没有错误,但没有数据显示。我很确定,我的问题是连接到正确的实例并检索数据。Firebase 数据,是这样的:
查看完整描述

3 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

初始化 Firebase 数据库和DatabaseReference内部onCreate()方法:


@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_violations);


    FirebaseDatabase database = FirebaseDatabase.getInstance();

    DatabaseReference dbref = database.getReference("save");


    ...

    ..

此外,您获得的参考是save但 Firebase 数据库显示为 : you violate ...。您可以尝试将名称更改为save或获取正确的数据 : you violate ...。


查看完整回答
反对 回复 2021-09-29
?
慕容3067478

TA贡献1773条经验 获得超3个赞

尝试使用addListenerForSingleValue()而不是addValueEventListener(). 希望能帮助到你。并将您的 firebase 链接更改saveyou violate your own speed limit with


查看完整回答
反对 回复 2021-09-29
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

我在您的数据库架构中看不到 o 已命名的引用,save但我看到了一个已命名的You violate your own speed limit with,必须在您的引用中使用它才能从数据库中获取数据。因此,要解决此问题,请使用以下代码行:


DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();

DatabaseReference ref = rootRef.child("You violate your own speed limit with");

ValueEventListener valueEventListener = new ValueEventListener() {

    @Override

    public void onDataChange(DataSnapshot dataSnapshot) {

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

        for(DataSnapshot ds : dataSnapshot.getChildren()) {

            String speed = ds.getValue(String.class);

            violations.add(speed);

            Log.d(TAG, speed);

        }


        //Do what you need to do with y our violations list

    }


    @Override

    public void onCancelled(@NonNull DatabaseError databaseError) {

        Log.d(TAG, databaseError.getMessage());

    }

};

ref.addListenerForSingleValueEvent(valueEventListener);

logcat 中的结果将是所有这些值:


3 km / h at time: ...

3 km / h at time: ...

//an so on


查看完整回答
反对 回复 2021-09-29
  • 3 回答
  • 0 关注
  • 157 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信