2016-12-21 13 views
0

У меня есть FirebaseRecyclerAdapter, и его модель возвращает null. Когда я обращаюсь к объекту модели, который имеет класс POJO, он возвращает только null. Я проверил весь код с помощью firebase-UI и с примерами firebase-quickstart.FirebaseRecyclerAdapter model возвращает null

FirebaseRecyclerAdapter

mAdapter = new FirebaseRecyclerAdapter<EventDetails, EventViewHolder>(EventDetails.class,R.layout.event_viewholder,EventViewHolder.class,myQuery) { 

            @Override 

            protected void populateViewHolder(final EventViewHolder viewHolder,final EventDetails model,final int position) { 

                final DatabaseReference eventRef = getRef(position); 


                final String postKey = eventRef.getKey(); 

                viewHolder.itemView.setOnClickListener(new View.OnClickListener() { 

                    @Override 

                    public void onClick(View v) { 

                        Message.ts(getActivity(),"Clicked on key" + postKey); 

// Intent intent = new Intent(getActivity(), PostDetailActivity.class); 

// intent.putExtra("", postKey); 

// startActivity(intent); 

                    } 

                }); 


                Message.ts(getActivity(),"safdfdf"+model.getEventName()); 


                viewHolder.Name.setText(eventRef.child("eventName").child()); 

                viewHolder.Desc.setText(model.getEventDesc()); 

                if (model.getCoordinates()!=null){ 

                    viewHolder.Location.setVisibility(View.VISIBLE); 

                    String[] ltlng = model.getCoordinates().split(","); 

                    String url = "http://maps.google.com/maps/api/staticmap?center=" + ltlng[0] + "," + ltlng[1] + "&zoom=15&size=400x200&sensor=false"; 

                    viewHolder.Map.setImageUrl(url,mImageLoader); 

                } 


            } 

        }; 

        mRecyclerView.setAdapter(mAdapter); 

Pojo класс

public class EventDetails { 

    private String EventName, EventDesc; 

    private int limit = -1; 

    private String Coordinates; 


    public EventDetails(){}//Empty constructor for Firebase 


    public EventDetails(String eventName, String eventDesc) { 

        this.EventName = eventName; 

        this.EventDesc = eventDesc; 

    } 


    public int getLimit() { 

        return limit; 

    } 


    public void setLimit(int limit) { 

        this.limit = limit; 

    } 


    public String getCoordinates() { 

        return Coordinates; 

    } 


    public void setCoordinates(String coordinates) { 

        Coordinates = coordinates; 

    } 


    public String getEventName() { 

        return EventName; 

    } 


    public String getEventDesc() { 

        return EventDesc; 

    } 

} 

Viewholder

public class EventViewHolder extends RecyclerView.ViewHolder { 


    public TextView Name, Desc, Date; 

    public NetworkImageView Map; 

    public LinearLayout Location; 


    public EventViewHolder(View itemView) { 

        super(itemView); 

        Name = (TextView) itemView.findViewById(R.id.eventNameDisp); 

        Desc = (TextView) itemView.findViewById(R.id.eventDescDisp); 

        Date = (TextView) itemView.findViewById(R.id.dateDisp); 

        Map = (NetworkImageView) itemView.findViewById(R.id.mapNIView); 

        Location = (LinearLayout) itemView.findViewById(R.id.location); 

    } 

} 

версия Firebase-интерфейс: 1,01 (последняя) Firebase/Play версия Услуги: 10.0.1

+1

Это поможет включить весь соответствующий код, образцы данных, протоколы отладки и информацию о версии, чтобы мы могли полностью понять проблему. См. [Как спросить] (http://stackoverflow.com/help/how-to-ask) и [создание mcve] (http://stackoverflow.com/help/mcve). – Kato

+0

@ Kato Я обновил вопрос и, пожалуйста, спросите, нужны ли вам дополнительные сведения. Спасибо. – user3740778

ответ

1

Проблема была решена путем добавления в класс POJO правильных конструкторов, геттеров и метода setter.

public class EventDetails { 

    private String EventName, EventDesc; 

    private int limit = -1; 

    private String Coordinates; 

    private String Date; 

    private String date; 


    public EventDetails() { 

    }//Empty constructor for Firebase 


    public EventDetails(String eventName, String eventDesc, String Date) { 

        this.EventName = eventName; 

        this.EventDesc = eventDesc; 

        this.Date = Date; 

    } 


    public EventDetails(String EventName,String EventDesc,int limit,String Coordinates,String Date){ 

        this.EventName = EventName; 

        this.EventDesc = EventDesc; 

        this.limit = limit; 

        this.Coordinates = Coordinates; 

        this.Date = Date; 

    } 


    public int getLimit() { 

        return limit; 

    } 


    public void setLimit(int limit) { 

        this.limit = limit; 

    } 


    public String getCoordinates() { 

        return Coordinates; 

    } 


    public void setCoordinates(String coordinates) { 

        Coordinates = coordinates; 

    } 



    public String getEventName() { 

        return EventName; 

    } 


    public void setEventName(String eventName) { 

        EventName = eventName; 

    } 


    public String getEventDesc() { 

        return EventDesc; 

    } 


    public void setEventDesc(String eventDesc) { 

        EventDesc = eventDesc; 

    } 


    public String getDate() { 

        return date; 

    } 

} 

И спасибо вам за помощь!

0

Сделать имена классов классов такими же, как имя ключа базы данных firebase. Если база данных похожа на Сообщение 1.PostImage 2.PostTitle Тогда переменной-членом класса модели будет String PostImage, String PostTitle.

 Смежные вопросы

  • Нет связанных вопросов^_^