2017-04-22 9 views
0

出席記録を示すアンドロイドアプリケーションを作成しています。私はレコードを表示するためにlistviewを使用しています。しかし、リストビューには名前または時刻のいずれかの行(項目)しか表示できません。名前と時刻の両方をリストビューに表示するにはどうすればいいですか?ここでfirebaseサブアイテムを含むAndroidリストビュー

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) { 

      } 
     }); 

答えて

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); 
    } 
関連する問題