【发布时间】:2019-01-09 14:11:36
【问题描述】:
我正在尝试从 Firebase 检索 HashMap 以填充我的 Firebase RecyclerView 下面是我要检索的模型类:
public class Employee{
private HashMap<String, Person> PeopleMap;
// = new HashMap<String, Person>();
public Employee () {
}
public Employee(HashMap<String, Person> people) {
this.PeopleMap= people;
}
public HashMap<String, Person> getMap() {
return PeopleMap;
}
public void setMap(HashMap<String, Person> people) {
this.PeopleMap= people;
}
}
人物类
public class Person {
private String ImageUrl;
private String Name;
private String Pay;
public Person() {
}
public Person(String name, String imageUrl, String pay,
) {
ImageUrl = imageUrl;
Name = name;
Pay = pay;
}
public String getImageUrl() {
return ImageUrl;
}
public void setImageUrl(String imageUrl) {
ImageUrl = imageUrl;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getPay() {
return Pay;
}
public void setPrice(String pay) {
Pay= pay;
}
}
现在的问题是,当我在 firebase recycler 中检索我的 Employe 模型类时,它不为空,但如果我从那里检索我的 Hashmap,则地图的大小为零,而下面的地图上有项目是我正在做的
Firebase REyler
@Override
protected void onBindViewHolder( ConvoViewHolder holder, int
position, Employee model) {
if (model.equals(null)){
Toast.makeText(OrderConversation.this, "object is null",
Toast.LENGTH_SHORT).show();
}
else
{
HashMap<String, OrderItem> cartitems = model.getCart();
int i = cartitems.size();
if (i==0)
{
Toast.makeText(OrderConversation.this, "null
map", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(OrderConversation.this, "size of
map in bind"+ Integer.toString(i),
Toast.LENGTH_SHORT).show();
}
}
}
};
mEmpList.setAdapter(adapter);
adapter.startListening();
我的数据库结构如下所示,以员工为父节点,
对不起,我必须输入它,我希望每个人都清楚我有什么样的 str。我想从部门节点检索,以便我可以得到两个对象(DHead1 和 Dhead2),它们有不同的元素,因为 Dhead 有 3 个人员类对象,而 Dhead2 有 2 个。所以我可以走的一种方法是我首先将它们加载到列表中,然后它们使用它们或我现在使用的其他方式,即将它们作为包含人员类对象映射的对象检索。
我在下面尝试了这个,我得到的值很好,但是在 onbindview 里面它不起作用
mDatabase.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot ds: dataSnapshot.getChildren()){
GenericTypeIndicator<Map<String, Person>> to = new
GenericTypeIndicator<Map<String, Person>>() {};
Map<String, Person> map = ds.getValue(to);
for(Person ml:convoModels.values()) {
String name = ml.getName();
Toast.makeText(context, "name is "+ name,
Toast.LENGTH_SHORT).show();
}
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
【问题讨论】:
-
This 是一种推荐的方式,您可以通过这种方式从 Firebase 实时数据库中检索数据并使用
FirebaseRecyclerAdapter将其显示在RecyclerView中。 -
@AlexMamo 我想从 firebase 检索一个 Employee 模型对象。我正在遵循相同的步骤,但我的模型对象包含一个哈希图,我想使用该哈希图,但我的模型类在这里返回 null 为什么是
-
我已将我的 Person 类对象存储在 firebase 中,我想从 firebase 的节点下检索这些对象的列表。有没有其他方法可以从 firebase 获取对象(内部包含对象列表)
-
在这种情况下,请添加您的数据库结构。
-
我已经更新了,请看看你能不能帮忙,对不起,我现在没有系统,否则我会上传确切的结构,但我试图简化它
标签: android firebase firebase-realtime-database android-recyclerview firebaseui