Search code examples
androidfirebasefirebase-realtime-databasefirebaseui

Crashing Problems on Populating Android Firebase RecyclerView Adapter


I will strongly appreciate your help to solve this problem i have been having for sometime now.With a simple JSON data structure as Follows:

` "Message" : {
    "Three" : "Cart",
    "Two" : "WOOOOOH",
    "one" : "wow"
  },` 

I intend to fetch the fetch this data and populate it in my RecyclerView.On using the string class it works,code is as follows:

`//Adapter
     FirebaseRecyclerAdapter<String, MessageViewHolder> mFirebaseAdapter=
             new FirebaseRecyclerAdapter<String, MessageViewHolder>(String.class,
                     R.layout.layout,
                     String.class,
                     myRef.child("Message")
             ) {
                 @Override
                 protected void populateViewHolder(MessageViewHolder viewHolder, String model, int position) {
                     viewHolder.messageTextView.setText(model);
                 }
             };


                 recyclerView.setAdapter(mFirebaseAdapter);
`

But on using a POJO, it crashes. POJO(Message.java):

`public class Message {
    private String one,Two,Three;
    public Message(){

    }
    public Message(String one, String Two, String Three)
    {
        this.one=one;
        this.Two=Two;
        this.Three=Three;

    }

    public String getOne() {
        return one;
    }

    public void setOne(String one) {
        this.one = one;
    }

    public String getTwo() {
        return Two;
    }

    public void setTwo(String Two) {
        Two = Two;
    }

    public String getThree() {
        return Three;
    }

    public void setThree(String Three) {
        Three = Three;
    }
}`

The MainActivity class that uses the POJO is:

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

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


        recyclerView.setAdapter(mFirebaseAdapter);
`

The MessageViewHolder is defined thus:

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

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

        }

    }
`

Solution

  • Change

    new FirebaseRecyclerAdapter<List, MessageViewHolder>(List.class
    

    To

    new FirebaseRecyclerAdapter<Message, MessageViewHolder>(Message.class