2016-11-21 16 views
0

В моей деятельности, внутри OnCreate() у меня есть это:Как реализовать FirebaseRecyclerAdapter при работе с two_line_list_item?

final FirebaseRecyclerAdapter<String,MessageViewHolder> adapter = new FirebaseRecyclerAdapter<String, MessageViewHolder>(
       String.class, 
       android.R.layout.two_line_list_item, 
       MessageViewHolder.class, 
       databaseReferenceCurrentUser 
     ) { 
      @Override 
      protected void populateViewHolder(MessageViewHolder viewHolder, String model, int position) { 
       viewHolder.mText.setText(model); 



        } 
       }; 

    mRecyclerView.setAdapter(adapter); 

public static class MessageViewHolder extends RecyclerView.ViewHolder { 
     TextView mText; 
     public MessageViewHolder(View v){ 
      super(v); 
      mText = (TextView) v.findViewById(android.R.id.text1); 
     } 
    } 

Теперь я хочу, чтобы заполнить мой RecyclerView с объектами типа прихожанин, я определил класс:

public class Parishioner { 

    private String parishionerName; 
    private String phoneNumber; 

    public Parishioner(String parishionerName, String phoneNumber) { 
     this.parishionerName = parishionerName; 
     this.phoneNumber = phoneNumber; 
    } 

    public Parishioner(){ 
    } 

    public String getParishionerName() { 
     return parishionerName; 
    } 

    public void setParishionerName(String parishionerName) { 
     this.parishionerName = parishionerName; 
    } 

    public String getPhoneNumber() { 
     return phoneNumber; 
    } 

    public void setPhoneNumber(String phoneNumber) { 
     this.phoneNumber = phoneNumber; 
    } 
} 

при добавлении нового прихожанина в моем DB, я использую

databaseReferenceCurrentUser.push().setValue(new Parishioner(editTextPName.getText().toString(),editTextPPhone.getText().toString())); 

Как я могу это сделать?

ответ

1

Вам необходимо изменить класс модели String на Parishioner.

final FirebaseRecyclerAdapter<Parishioner, MessageViewHolder> adapter = 
     new FirebaseRecyclerAdapter<Parishioner, MessageViewHolder>(
       Parishioner.class, 
       android.R.layout.two_line_list_item, 
       MessageViewHolder.class, 
       databaseReferenceCurrentUser) { 
      @Override 
      protected void populateViewHolder(MessageViewHolder viewHolder, Parishioner model, int position) { 
        viewHolder.mName.setText(model.getParishionerName()); 
        viewHolder.mPhone.setText(model.getPhoneNumber()); 
       } 
      }; 

mRecyclerView.setAdapter(adapter); 

public static class MessageViewHolder extends RecyclerView.ViewHolder { 
    TextView mName; 
    TextView mPhone; 

    public MessageViewHolder(View v){ 
     super(v); 
     mName= (TextView) v.findViewById(android.R.id.text1); 
     mPhone= (TextView) v.findViewById(android.R.id.text2); 
    } 
} 
+0

Я хочу иметь как имя и номер телефона каждого из прихожан, отображаемых в RecyclerView – SimpleFuzz

+0

@SimpleFuzz, то вы должны обновить вам класс держатель, я буду обновлять мой ответ. – wisemann

+0

Прежде чем отправлять вопрос, я уже пробовал это, но когда запускается действие, я получаю следующее исключение: «com.google.firebase.database.DatabaseException: невозможно преобразовать объект типа java.lang.String для type packagename .Parishioner "это внутри моего основного фрагмента внутри Activity Drawer, не уверен, что это актуально или нет ... этого не должно быть. Если я хочу отображать только имена, он отлично работает. – SimpleFuzz

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

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