Android列表视图与Firebase子项目
问题描述:
我正在写一个显示出勤记录的android应用程序。我使用listview来显示记录。但是,我只能在列表视图上显示一行(项目)名称或时间。如何在listview上显示名称和时间?Android列表视图与Firebase子项目
这里是我使用的代码。
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)使用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);
}