带有firebase子项的Android列表视图

时间:2017-04-22 16:32:30

标签: android listview firebase

我正在编写一个显示出勤记录的Android应用程序。我正在使用listview来显示记录。但是,我只能在列表视图中显示名称或时间的一行(项目)。如何在列表视图中显示姓名和时间?

Firebase database structure

这是我正在使用的代码。

public class A1Attendance extends AppCompatActivity {

    ArrayAdapter<String> adapter;
    List<HashMap<String , String>> list = new ArrayList<>();
    ListView listView;
    String Name;
    String Time;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_a1_attendance);
        ListView listView = (ListView) findViewById(R.id.Listview);
        final ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                android.R.id.text1);
        listView.setAdapter(adapter);

        DatabaseReference reference_contacts = FirebaseDatabase.getInstance().getReference("Attendance");
        reference_contacts.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                adapter.clear();
                for (DataSnapshot ds : dataSnapshot.getChildren() ){
                    HashMap<String, String> list = new HashMap<String, String>();
                    adapter.add(ds.child("Name").getValue().toString());
                }
            }
            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

1 个答案:

答案 0 :(得分:0)

1)使用Recycler View

2)创建课程:

    public class User(){
         String name;
         String time;
        public User (String name, String time){....}
        ....}

3)并进行查询:

 @Override
    public void onDataChange(DataSnapshot dataSnapshot)
    {
        adapter.clear();
        List<User> userList;
        for (DataSnapshot ds : dataSnapshot.getChildren() ){
            Map<String, Object> userData  
userList.add(new User( ds.child("Name").getValue().toString(), 
ds.child("Time").getValue().toString()));
        }
        adapter.add(userList);
    }