这是我的问题,我想在RecyclerView
中显示所有电话号码吗?
databaseReference = firebaseDatabase.getReference("CallLog");
//in on data change method using for
CallLogList logList = snapshot.getValue(CallLogList.class);
list.add(logList);
ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String,String>>();
HashMap<String, String> map = new HashMap<String, String>(); map.put("phone",phoneNumber);
map.put("name",callName);
map.put("callType",dir);
map.put("date",dateString);
map.put("duration",callDuration+" seconds");
arrayList.add(map);
myRef.push().setValue(arrayList);
答案 0 :(得分:1)
首先,您应该将树更改为这样:
Call Log
-Calls
--Lhe...
---CallType OUTGOING
--Lhe...
---CallType INCOMING
接下来,在您的项目中创建与Firebase中相同的字段的“ Calls”类,然后创建callType,日期,持续时间和电话。 之后,使用此代码,您可以将数据库中的所有实例放入列表中:
public void refreshList(DataSnapshot dataSnapshot) {
List<Class> list = new ArrayList<>();
for (DataSnapshot dataSnapshot1 : dataSnapshot.child("Calls").getChildren())
{
Item value = dataSnapshot1.getValue(Calls.class);
list.add(value);
}
}
现在您有了Calls类的对象列表,从中可以轻松访问电话号码。
答案 1 :(得分:1)
从Firebase获取整个列表后,将它们逐个迭代以将它们添加到列表中,然后在循环中将它们设置在RecyclerView
的适配器中,然后将适配器设置为所需的RecyclerView
< / p>
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
list = new ArrayList<CallLogList>();
for(DataSnapshot dataSnapshot1 :dataSnapshot.getChildren()){
CallLogList logList = snapshot.getValue(CallLogList.class);
list.add(logList);
}
yourAdapter = YourAdapter(list);
yourRecyclerView.setAdapter(yourAdapter);
}
有关更多信息,here是一个完整的示例
注意:如果您使用的是LiveData
或Paging
,则适配器的设置会有所不同,请让我知道是否需要更多示例