【问题标题】:I can't get data from specific root in FireBase我无法从 FireBase 中的特定根目录获取数据
【发布时间】:2017-04-30 10:16:14
【问题描述】:

我正在制作一个 android 应用,但在从 firebase 中的特定节点检索数据时遇到问题。

如何仅将“帖子”中的数据检索到我的列表视图?

我正在像这样使用 addChildEventListener:

mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.addChildEventListener(new ChildEventListener() {
    @Override
    public void onChildAdded(DataSnapshot dataSnapshot, String s) {
        dataArrayList.clear();
        for (DataSnapshot ds : dataSnapshot.getChildren()) {
            TrempData trempData2 = ds.getValue(TrempData.class);
            dataArrayList.add(0, trempData2);
            mListView.setAdapter(adapter);
            adapter.notifyDataSetChanged();
        }
    }

【问题讨论】:

  • 如何初始化mDatabase?请编辑您的问题以包含此信息。
  • 感谢您编辑我的问题.. 我写了您的要求

标签: android listview firebase firebase-realtime-database


【解决方案1】:

要仅获取帖子,请将您的侦听器附加到 Posts 子节点:

mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.child("Posts").addValueEventListener(new ValueEventListener() {

我将其更改为 ValueEventListener,因为您似乎希望一次性获取所有数据。

onDataChange of the listener, you can then loop over the data:

public void onDataChange(DataSnapshot dataSnapshot) {
    dataArrayList.clear();
    for (DataSnapshot ds : dataSnapshot.getChildren()) {
        TrempData trempData2 = ds.getValue(TrempData.class);
        dataArrayList.add(0, trempData2);
    }
    mListView.setAdapter(adapter);
    adapter.notifyDataSetChanged();
}

【讨论】:

  • 谢谢!它工作得很好,但我有新问题..我不能从“帖子”中删除值。当我使用 addChildEventListener 时,我在 onChildRemoved 中有一个删除特定值的代码。如何使用 addValueEventListener 实现它?
  • 您的onDataChange 将再次触发,您将获得该位置的完整数据列表。如果您不想这样,您应该使用addValueEventListener,它会触发更新中受影响的单个孩子。
  • 但是现在当我单击删除按钮时,它不会从 firebase 中删除值。可以用新问题(带代码)编辑主要问题吗?
  • 一切都好!!!我修改了我的删除按钮 OnClickListener。非常感谢我的朋友!
猜你喜欢
  • 2019-04-21
  • 2021-04-28
  • 1970-01-01
  • 2019-07-03
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多