0

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

} 

Ошибка От Firebase

Exception com.google.firebase.database.DatabaseException: Не удается преобразовать объект типа java.lang.String для ввода com.projectgenuis.eneanews.User

EDIT (JSON)

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

    } 
+0

Пожалуйста, поделитесь JSON (как текст, без скриншотов) узла '/ User' в базе данных yoru. Вы можете легко получить это, щелкнув ссылку Экспорт JSON в [вашей консоли базы данных Firebase] (https://console.firebase.google.com/project/_/database/data/). –

+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, я изменил тип данных класса в адаптере на строку и все равно сбой с той же ошибкой. Я следил за учебниками, но, похоже, не могу понять. Мое ПОЖО выглядит в порядке. 'Исключение java.lang.RuntimeException: java.lang.reflect.InvocationTargetException Вызванный java.lang.reflect.InvocationTargetException: Вызванный java.lang.NullPointerException: com.projectgenuis.eneanews.MainActivity $ MessageViewHolder.' –