嗨,我是Firebase的新手。这就是我的数据的外观
我想知道如何从零售商处获取distributorInfo。我试图从FirebaseRecyclerAdapter的populateViewHolder方法中获取distributorInfo。我能够获取所选商品的密钥。如何在distributorInfo中获取信息?
private void getRetailers() {
FirebaseRecyclerAdapter<RetailerInfo,RetailerViewHolder> adapter = new FirebaseRecyclerAdapter<RetailerInfo, RetailerViewHolder>(
RetailerInfo.class,
R.layout.distributor_row,
RetailerViewHolder.class,
mDatabase
) {
@Override
protected void populateViewHolder(RetailerViewHolder viewHolder, final RetailerInfo model, final int position) {
viewHolder.setAddress(model.getContactPerson());
viewHolder.setArea(model.getContactNumber());
viewHolder.setShopName(model.getShopName());
viewHolder.setZipcode(model.getZipcode());
viewHolder.setCity(model.getCity());
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// DatabaseReference ref = getRef(position);
// String key= ref.getKey();
// Toast.makeText(Distributors.this, key, Toast.LENGTH_SHORT).show();
ValueEventListener valueEventListener = new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
RetailerInfo retailerInfo = dataSnapshot.getValue(RetailerInfo.class);
Iterator it = retailerInfo.getDistributorInfo().entrySet().iterator();
while (it.hasNext()) {
Map.Entry pair = (Map.Entry)it.next();
Log.d("TAG","distributorInfo: "+pair.getKey() + " = " + pair.getValue());
it.remove(); // avoids a ConcurrentModificationException
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
};
mDatabase.addListenerForSingleValueEvent(valueEventListener);
}
});
}
};
recyclerView.setAdapter(adapter);
}
RetailerInfo的代码:-
公共类RetailerInfo {
字符串ID,商店名称,地址,城市,邮政编码,区域,contactPerson,contactNumber,contact_person_email,location_master,类型,last_vist,last_visited_by,cityName,salesPersonName;
HashMap distributorInfo;
public RetailerInfo() {
}
public RetailerInfo(String id, String shopName, String address, String city, String zipcode, String area, String contactPerson, String contactNumber, String contact_person_email, String location_master, String type, String last_vist, String last_visited_by, String cityName, String salesPersonName, HashMap<String, String> distributorInfo) {
this.id = id;
this.shopName = shopName;
this.address = address;
this.city = city;
this.zipcode = zipcode;
this.area = area;
this.contactPerson = contactPerson;
this.contactNumber = contactNumber;
this.contact_person_email = contact_person_email;
this.location_master = location_master;
this.type = type;
this.last_vist = last_vist;
this.last_visited_by = last_visited_by;
this.cityName = cityName;
this.salesPersonName = salesPersonName;
this.distributorInfo = distributorInfo;
}
public HashMap<String, String> getDistributorInfo() {
return distributorInfo;
}
public String getId() {
return id;
}
public String getShopName() {
return shopName;
}
public String getAddress() {
return address;
}
public String getCity() {
return city;
}
public String getZipcode() {
return zipcode;
}
public String getArea() {
return area;
}
public String getContactPerson() {
return contactPerson;
}
public String getContactNumber() {
return contactNumber;
}
public String getContact_person_email() {
return contact_person_email;
}
public String getLocation_master() {
return location_master;
}
public String getType() {
return type;
}
public String getLast_vist() {
return last_vist;
}
public String getLast_visited_by() {
return last_visited_by;
}
public String getCityName() {
return cityName;
}
public String getSalesPersonName() {
return salesPersonName;
}
public void setId(String id) {
this.id = id;
}
public void setShopName(String shopName) {
this.shopName = shopName;
}
public void setAddress(String address) {
this.address = address;
}
public void setCity(String city) {
this.city = city;
}
public void setZipcode(String zipcode) {
this.zipcode = zipcode;
}
public void setArea(String area) {
this.area = area;
}
public void setContactPerson(String contactPerson) {
this.contactPerson = contactPerson;
}
public void setContactNumber(String contactNumber) {
this.contactNumber = contactNumber;
}
public void setContact_person_email(String contact_person_email) {
this.contact_person_email = contact_person_email;
}
public void setLocation_master(String location_master) {
this.location_master = location_master;
}
public void setType(String type) {
this.type = type;
}
public void setLast_vist(String last_vist) {
this.last_vist = last_vist;
}
public void setLast_visited_by(String last_visited_by) {
this.last_visited_by = last_visited_by;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public void setSalesPersonName(String salesPersonName) {
this.salesPersonName = salesPersonName;
}
}
任何帮助或建议,谢谢。
最佳答案
例如,您还可以嵌套对象:
public class Retailer{
String Address, area, city, contactNumber, contactPerson, shopName, zipCode;
DistributorInfo distributorInfo;
public Retailer(...){
// Contructor
}
// Getter and setters
}
public class DistributorInfo {
// all fields, constructor, getter and setters
}
用法:
Retailer retailerInfo = dataSnapshot.getValue(Retailer.class);
关于java - 使用Android/Java从嵌套对象Firebase中检索数据?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46314380/