0

はのは、私がこれを持っているとしましょう。Firebaseがpush()キーの中からデータを取得する方法は?</p> <pre><code>Campaigns:{ UNIQUE_ID:{ title: "Hello", description: "Desc" } } </code></pre> <p>そして、他の<code>UNIQUE_ID</code> Sの束、と私はタイトルと説明を取得し、<code>RecyclerView</code>に入れたい:

私は、文字列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; 
    } 

} 

または代わりに、フィールドだけを公開するとゲッター/セッター削除:

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

Firebaseデータベースクライアントは、これらのパブリックフィールド(またはgetters/setter)に基づいて、データベースから読み込んだJSONに基づいて自動的にデータを設定します。

+0

私のViewHolderでは、私はセッターを持っています。違いはありますか? –

+0

そして、私の2番目のメソッドを実装している場合は、 'Campaign(title、description)'を呼び出すことすらできますか? –

+0

何もする必要はありません。firebase-uiはそれを自動的にマップし、 'populateViewHolder()'メソッドのパラメータとして渡します。@AbAppletic – Wilik

関連する問題

 関連する問題