无法使用FirebaseRecyclerAdapter将Firebase JSON转换为Java对象

无法使用FirebaseRecyclerAdapter将Firebase JSON转换为Java对象,java,android,firebase,firebase-realtime-database,Java,Android,Firebase,Firebase Realtime Database,我有两个活动,一个是创建评估对象,另一个是列出Firebase中的评估对象,但是我遇到了一个问题:POJO可以很好地序列化为JSON,但是FirebaseRecyclerAdapter似乎无法将JSON数据返回到对象类型 这是我的对象文件: @IgnoreExtraProperties public class Assessment { private String company; private String industry; private String location; priva

我有两个活动,一个是创建评估对象,另一个是列出Firebase中的评估对象,但是我遇到了一个问题:POJO可以很好地序列化为JSON,但是
FirebaseRecyclerAdapter
似乎无法将JSON数据返回到对象类型

这是我的对象文件:

@IgnoreExtraProperties
public class Assessment {

private String company;
private String industry;
private String location;
private String product;
private String ownerId;
private String ownerName;
private boolean isDraft;
private boolean isQuickWalk;
private Map<String, Category> categories;



public Assessment() {
    // Default constructor required for calls to DataSnapshot.getValue()
}

public Assessment(String companyName, String industryName, String locationName,
                  String productName, String ownerId, String ownerName, boolean isDraft, boolean isQuickWalk, Map<String, Category> categories) {
    this.company = companyName;
    this.industry = industryName;
    this.location = locationName;
    this.product = productName;
    this.ownerId = ownerId;
    this.ownerName = ownerName;
    this.isDraft = isDraft;
    this.isQuickWalk = isQuickWalk;
    this.categories = categories;
}

public String getCompanyName() {
    return company;
}

public String getIndustryName() {
    return industry;
}

public String getLocationName() {
    return location;
}

public String getProductName() {
    return product;
}

public String getOwnerName() {
    return ownerName;
}

public boolean getIsDraft() {
    return isDraft;
}

public boolean getIsQuickWalk() {
    return isQuickWalk;
}
你能给我的任何帮助都将是非常好的,这几天我一直在绞尽脑汁。谢谢

在这一行:

  Query query = mEvalRef;
我假设mEvalRef是一个数据库引用,您能否显示它,因为不清楚如何从数据库查询数据

只需添加(mEvalRef),即可找到问题

编辑

在您的(评估)类中,我注意到变量没有setter方法,请为类中的每个变量添加setter,看看这是否有帮助

编辑2

在代码中尝试读取值

去掉这个

    FirebaseRecyclerOptions<Assessment> options = new FirebaseRecyclerOptions.Builder<Assessment>()
        .setQuery(query, Assessment.class)
        .build();
最后,在以下内容中将(私有)更改为(公共):

别忘了在评估课上保留变量的设置器,并像我告诉你的那样公开变量

编辑3

现在,忘记编辑2,按照最初的方式重新键入代码,只需在配置所有内容后执行此操作:

在初始化适配器的方法中,在此之前添加:

   mRecyclerView.setAdapter(adapter);
这:


mrreference=FirebaseDatabase.getInstance().getReference();mEvalRef=mReference.child(FIREBASE_评估)是我使用它的方式,其中
FIREBASE_ASSESSMENTS
是一个常量,我的FIREBASE结构中的条目是这样的:app | | | | | | | | | | | | |用户| | | |等检查编辑,看看它是否有助于加载setters,我担心没有改变任何东西。从技术上讲,变量不是在调用新评估时设置的,即
评估=新评估(a、b、c、d等)?为了涵盖我的所有基础知识,我已验证我的proguard文件设置正确。很高兴能帮助您。
  Query query = mEvalRef;
    FirebaseRecyclerOptions<Assessment> options = new FirebaseRecyclerOptions.Builder<Assessment>()
        .setQuery(query, Assessment.class)
        .build();
   adapter = new FirebaseRecyclerAdapter<Assessment, ViewDraftsViewHolder>(options)
      adapter = new FirebaseRecyclerAdapter<Assessment, ViewDraftsViewHolder>(Assessment.class, R.layout.completed_and_drafts_list_item, ViewDraftsViewHolder.class, query )
        @Override
    public ViewDraftsViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.completed_and_drafts_list_item, parent, false);
        return new ViewDraftsViewHolder(view);
    }
    private static class ViewDraftsViewHolder extends RecyclerView.ViewHolder {
   mRecyclerView.setAdapter(adapter);
   adapter.startListening();