【问题标题】:How do I get names of children from Firebase to listview Android?如何从 Firebase 获取孩子的姓名到 listview Android?
【发布时间】:2019-05-31 09:41:23
【问题描述】:

我是使用 Firebase 的新手。如何将孩子的姓名从我的 Firebase 获取到列表视图?

这是我的数据库:

这是我的代码,但它不起作用。

public class Education extends AppCompatActivity {

    private DatabaseReference fNotesDatabase;
    ListView listView;
    ArrayList<String> arraylist = new ArrayList<>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_education);

        Firebase.setAndroidContext(this);
        fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes").child("education").child();
        listView = (ListView) findViewById(R.id.listview);
        final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, arraylist);

        listView.setAdapter(arrayAdapter);

        fNotesDatabase.addChildEventListener(new ChildEventListener() {
            @Override
            public void onChildAdded(DataSnapshot dataSnapshot, String s) {
                Map<String, Object> map = new HashMap<String, Object>();
                arraylist.add(map.values().toString());
                arrayAdapter.notifyDataSetChanged();
            }

            @Override
            public void onChildChanged(DataSnapshot dataSnapshot, String s) {
                Map<String, Object> map = new HashMap<String, Object>();
                arraylist.add(map.values().toString());
            }

            @Override
            public void onChildRemoved(DataSnapshot dataSnapshot) {

            }

            @Override
            public void onChildMoved(DataSnapshot dataSnapshot, String s) {

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }
}

【问题讨论】:

  • 问题中不要添加代码图片,而是复制代码并添加到问题中
  • 您要准确检索什么? education 里面的所有东西?
  • 我想检索名称 cooltodo、教育、心态或我以后添加的每个孩子

标签: android firebase listview


【解决方案1】:

如果要检索Notes 下的直接子级,请尝试以下操作:

ArrayAdapter adapter;
ListView listView;
ArrayList<String> arraylist = new ArrayList<>();

listView = findViewById(R.id.listview);
fNotesDatabase = FirebaseDatabase.getInstance().getReference().child("Notes");

fNotesDatabase.addSingleValueEventListener(new ValueEventListener() {

    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {

        for(DataSnapshot datas: dataSnapshot.getChildren()) {
            String values = datas.getKey();
            arraylist.add(values);
            adapter = new ArrayAdapter(Education.this, android.R.layout.simple_list_item_single_choice, arraylist);
            listView.setAdapter(adapter);
        }
    }

    @Override
    public void onCancelled(FirebaseError firebaseError) {

    }
});

首先在子 Notes 添加引用,然后在其中循环并使用 getKey() 检索 keys

【讨论】:

  • 以及如何在列表视图中显示它?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
  • 2012-05-20
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多