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:

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; 
    } 

} 

錯誤從火力地堡

異常com.google.firebase.database.DatabaseException:無法轉換對象類型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/)中的導出JSON鏈接輕鬆獲取此信息。 –

+0

JSON:{ 「用戶」:{ 「名稱」:「錫安」, } –

回答

2

的FirebaseUI適配器旨在顯示項目的列表,你的情況的用戶列表。在您當前的數據模型中,/User節點下只有一個用戶。這意味着無法在列表視圖中顯示它。

解決這個問題的最簡單的方法是改變你的JSON讓用戶列表的Users節點下:

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

,然後將適配器連接到這個集合:

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

謝謝回答,我也跟着你的建議,有這一次的應用程序有三個新的錯誤崩潰: '異常的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

只是爲了確定空指針錯誤不是來自我的POJO,我將適配器中的類數據類型更改爲字符串,並且仍然使用相同的錯誤崩潰。我跟着教程,但似乎無法弄清楚。我的POJO似乎是爲了。 '例外了java.lang.RuntimeException:由java.lang.reflect.InvocationTargetException引起java.lang.reflect.InvocationTargetException : 通過顯示java.lang.NullPointerException引起: com.projectgenuis.eneanews.MainActivity $ MessageViewHolder.' –