0

比方说,我有这样的:如何让Firebase从push()键中获取数据?

Campaigns:{ 
    UNIQUE_ID:{ 
    title: "Hello", 
    description: "Desc" 
    } 
} 

和一堆其他UNIQUE_ID S的,我想要检索标题和描述,并把它们放在一个RecyclerView


我试了一下:

我试图使一个自定义的运动类,用琴弦descriptiontitle

而且我有这样的方法:

String title; 
String description; 
public Campaign(){} 
public Campaign(String title, String description) { 
    this.title = title; 
    this.description = description; 
} 
public String getTitle() { 
    return title; 
} 

public String getDescription() { 
    return description; 
} 

当我尝试让适配器,用这种方法:

RecyclerView.Adapter mAdapter = new FirebaseRecyclerAdapter<Campaign,CampaignHolder>(Campaign.class, R.layout.recyclerview_template, CampaignHolder.class,ref){ 
     @Override 
     public void populateViewHolder(CampaignHolder viewHolder, Campaign campaign, int position){ 
      viewHolder.setTitle(campaign.getTitle()); 
      viewHolder.setDescription(campaign.getDescription()); 
     } 
    }; 

campaign.getTitle()明显恢复null,我永远不能明白为什么,因为我调用构造函数。但是,如果我想调用构造函数,则需要参数title,description。但是我在哪里得到这个,或者我做错了什么?

备注:如果我不清楚,我很努力想要告诉我什么是失踪之前,你downvote所以你的downvote是值得的,并帮助社区。

回答

1

Campaign类将需要或者制定者(除了你已经拥有的干将):

public class Campaign { 
    String title; 
    String description; 
    public Campaign(){} 
    public Campaign(String title, String description) { 
     this.title = title; 
     this.description = description; 
    } 
    public String getTitle() { 
     return title; 
    } 
    public void setTitle(title) { 
     this.title = title; 
    } 

    public String getDescription() { 
     return description; 
    } 
    public void setDescription(description) { 
     this.description = description; 
    } 

} 

或者,只是做了场公众和去除getter/setter方法:

public class Campaign { 
    public String title; 
    public String description; 
    public Campaign(){} 
    public Campaign(String title, String description) { 
     this.title = title; 
     this.description = description; 
    }  
} 

基于这些公共字段(或getter/setter),Firebase数据库客户端将根据从数据库中读取的JSON自动填充数据。

+0

但等待,在我的ViewHolder中我有setter。这有什么不同吗? –

+0

而且,如果我正在实施你的第二种方法,我是否还要打电话给'Campaign(title,description)'? –

+0

你不需要做任何事情,firebase-ui自动为你映射,然后作为'populateViewHolder()'方法中的一个参数传递它@AbAppletic – Wilik