0

AndroidのFirebaseUI RecyclerビューがStringクラスのデータ型にうまく応答しています。しかし、POJOクラスをデータ型として使用すると、ビューにデータが移入されません。FirebaseUI-Android RecyclerViewがPOJOに応答しない

POJO内の名前がJSONファイル内の名前と一致するように時間がかかりました。以下は、私のコードは次のとおりです。

public class MainActivity extends AppCompatActivity { 
    public static class MessageViewHolder extends RecyclerView.ViewHolder { 
     TextView messageTextView; 

     public MessageViewHolder(View view) { 
      super(view); 
      messageTextView =(TextView) messageTextView.findViewById(android.R.id.text1); 

     } 

    } 

    android.support.v7.widget.RecyclerView recyclerView; 

    FirebaseDatabase database = FirebaseDatabase.getInstance(); 

    DatabaseReference myRef = database.getReference(); 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 

    @Override 
    protected void onStart() 
    { 
     super.onStart(); 
     //Recycler 
     recyclerView=(android.support.v7.widget.RecyclerView)findViewById(R.id.recyclerview); 

     recyclerView.setHasFixedSize(true); 
     recyclerView.setLayoutManager(new LinearLayoutManager(this)); 

     //Adapter 
      FirebaseRecyclerAdapter<User, MessageViewHolder> mFirebaseAdapter= 
       new FirebaseRecyclerAdapter<User, MessageViewHolder>(User.class, 
         R.layout.layout, 
         MessageViewHolder.class, 
         myRef.child("User") 
       ) { 
        @Override 
        protected void populateViewHolder(MessageViewHolder viewHolder, User model, int position) { 

         viewHolder.messageTextView.setText(model.getName()); 
        } 
       }; 


     recyclerView.setAdapter(mFirebaseAdapter); 


    } 
} 

POJO:Firebase

例外com.google.firebase.database.DatabaseExceptionから

public class User { 

    public User(){ 

    } 
    String Name; 
    String email; 
    public User(String Name){ 

     this.Name=Name; 

    } 

    public void setName(String Name) { 
     this.Name = Name; 
    } 

    public String getName() { 
     return Name; 
    } 

} 

エラー:オブジェクトは変換できません。 java.lang.String型でcom.projectgenuis.eneanews.Userと入力します

EDIT(JSON)

{ 
    "User" : { 
    "Name" : "Zion", 

    } 
+0

共有してください。 yoruデータベースの '/ User'ノードのJSON(テキストとして、スクリーンショットなし)。 [Firebaseデータベースコンソール](https://console.firebase.google.com/project/_/database/data/)の[Export JSON]リンクをクリックすると、簡単にこれを取得できます。 –

+0

JSON:{ 「ユーザー」:{ 「名前」:「シオン」、 }答えるため –

答えて

2

FirebaseUIアダプタは、あなたの場合、ユーザーのリストで、項目のリストを表示するように設計されています。現在のデータモデルでは、/Userノードの下に1人のユーザーしか存在しません。つまり、リストビューで表示する方法はありません。

この問題を解決する最も簡単な方法は、Usersノードの下にユーザーのリストを持っているあなたのJSONを変更することです。その後、

{ 
    "Users" : { 
    "User1": { 
     "Name" : "Zion" 
    } 
    "User2": { 
     "Name" : "puf" 
    } 
    } 
} 

そして、このコレクションにアダプタを取り付ける:

mFirebaseAdapter= new FirebaseRecyclerAdapter<User, MessageViewHolder>(
        User.class, 
        R.layout.layout, 
        MessageViewHolder.class, 
        myRef.child("Users") 
      ) { 
+0

おかげで、私はあなたの提案に続き、アプリが3つの新しいエラーでクラッシュしているこの時間でした: '例外java.langでの.RuntimeException:java.lang.reflect.InvocationTargetException java.lang.reflect.InvocationTargetExceptionによって引き起こされた場合: java.lang.NullPointerExceptionによって発生した場合: ' –

+0

これらは新しいため、進歩しているように思えます。新しい問題。投稿する前に、 'NullPointerException'のトラブルシューティング方法をお読みください:http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –

+0

nullポインターのエラーが私のPOJOからではないことを確かめて、私はアダプターのクラスデータ型をstringに変更しましたが、同じErrorでクラッシュします。私はチュートリアルに従いましたが、それを理解しているようには見えません。私のPOJOは順番に見えます。 '例外java.lang.RuntimeException:にjava.lang.reflect.InvocationTargetExceptionにjava.lang.reflect.InvocationTargetExceptionによって引き起こさ :java.lang.NullPointerExceptionがによって引き起こさ : com.projectgenuis.eneanews.MainActivity $ MessageViewHolder.' –

関連する問題