【问题标题】:Retrieving Data from Firebase real time Database to ListView从 Firebase 实时数据库中检索数据到 ListView
【发布时间】:2019-05-30 22:05:19
【问题描述】:

我在将数据从 Firebase 上的数据库存储到 ListView 时遇到问题,我正在使用下面的方法,当我点击按钮时,它会运行, 这是我使用的方法

private void retrieveMyDataMethod(){
    databaseReference = FirebaseDatabase.getInstance().getReference();

    databaseReference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {

            String name = dataSnapshot.child(uid).child("name").getValue(String.class);
            String address = dataSnapshot.child(uid).child("address").getValue(String.class);

            String[] data = new String[]{
                    name, address
            };

            List<String> data_list = new ArrayList<String>(Arrays.asList(data));

            ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data_list);

            listViewRe.setAdapter(arrayAdapter);

        }

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

        }
    });
}

【问题讨论】:

  • 问题在哪里????
  • @OussemaAroua “我在将数据从 Firebase 上的数据库存储到 ListView 时遇到问题”第一行大声笑......当您单击按钮以提取该信息时,请分享错误/日志猫。获得您尝试提取的响应也可能是有益的。
  • @Nero 有什么问题?碰撞 ?没有数据 ?错误的输出?嗯,这就是我的意思。
  • @OussemaAroua 不要问我,哈哈,我也问过 OP 同样的事情 :) 他/她应该从一开始就向我们提供这些信息
  • 请添加您的数据库结构并告诉我们预期的结果是什么。请回复@AlexMamo

标签: java android firebase android-studio firebase-realtime-database


【解决方案1】:

要解决这个问题,请使用以下代码行:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
Query query = rootRef.orderByChild("name");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        ArrayList<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String name = ds.child("name").getValue(String.class);
            list.add(name);
        }
        ListView listView = (ListView) findViewById(R.id.list_view);
        ArrayAdapter<String> arrayAdapter = new ArrayAdapter<>(getApplicationContext(), android.R.layout.simple_list_item_1, list);
        listView.setAdapter(arrayAdapter);
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
        Log.d(TAG, databaseError.getMessage()); //Don't ignore errors!
    }
};
query.addListenerForSingleValueEvent(valueEventListener);

ListView 中的输出将是:

cmon
here

【讨论】:

  • 非常感谢它解决了我 80% 以上的问题,另外 20% 我想根据我已经使用 FirebaseUser user = firebaseAuth.getCurrentUser(); 将其保存在 String 上的 uid 来检索名称字符串String uid = user.getUid();
  • 很高兴听到这个消息 :) 但这听起来是一个新问题,基本上应该被视为另一个无法在评论中回答的问题。作为个人猜测,我认为您应该使用其他数据库参考,但为了遵守本社区的规则,请使用 MCVE 发布另一个新问题,以便我和其他 Firebase 开发人员可以帮助您。
  • 知道我的回答很有用,请考虑通过单击左侧投票箭头下方的复选标记 (✔️) 来接受它。应将颜色更改为绿色。我会很感激的。谢谢!
  • 你欠它的,我很抱歉。
猜你喜欢
  • 2019-04-16
  • 2020-12-09
  • 2018-12-26
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2017-10-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多