在Android的Arraylist中从Firebase检索数据

时间:2018-08-09 08:54:33

标签: java android firebase firebase-realtime-database

如何将所有Electrician数据检索到ListView中?

enter image description here

3 个答案:

答案 0 :(得分:0)

如果要创建一个列表视图,其中列表视图中的每个项目都包含一名电工的一些或全部数据,则首先需要节点“电工”的数据快照。还创建一个名为“ elecrician”的对象,该对象具有与firebase数据库相同的数据字段。然后使用数据快照创建类似于“ Ryan Pierce”答案的“电工”对象数组。现在您已经有了电工的数组,可以将其数据显示在列表视图中。

此外,如果您想计算例如某个员工在该公司工作了多长时间(我认为更容易使用),那么也许可以更方便地使用毫秒(ms)而非日期作为字符串。同样,字段“ JobTitle”可能是多余的,因为节点标题已经说明了工作标题,例如“电工”。

答案 1 :(得分:0)

从firebase创建对象列表(电工),然后通过在自定义适配器中传递对象列表来创建列表视图。

答案 2 :(得分:0)

假设您有一个名为Electrician的电工对象模型类,要获取电工对象列表,请使用以下代码:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference electricianRef = rootRef.child("Employee").child("Electrician");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<Electrician> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            Electrician electrician = ds.getValue(Electrician.class);
            list.add(electrician);
            Log.d("TAG", electrician.getLname());
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {}
};
electricianRef.addListenerForSingleValueEvent(valueEventListener);

您可以使用String类并获得电工名称列表来实现更简单的操作:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference();
DatabaseReference electricianRef = rootRef.child("Employee").child("Electrician");
ValueEventListener valueEventListener = new ValueEventListener() {
    @Override
    public void onDataChange(DataSnapshot dataSnapshot) {
        List<String> list = new ArrayList<>();
        for(DataSnapshot ds : dataSnapshot.getChildren()) {
            String lName = ds.child("Lname").getValue(String.class);
            list.add(lName);
            Log.d("TAG", lName);
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {}
};
electricianRef.addListenerForSingleValueEvent(valueEventListener);