Я не могу найти метод populateViewHolder в классе FirebaseRecyclerAdapter

Я хочу использовать FirebaseRecyclerAdapter в моем проекте, и я использовал этот сегмент кода в предыдущем проекте

 FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder> adapter = new FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage.class, android.R.layout.two_line_list_item, ChatMessageViewHolder.class, ref) { public void populateViewHolder(ChatMessageViewHolder chatMessageViewHolder, ChatMessage chatMessage, int position) { chatMessageViewHolder.nameText.setText(chatMessage.getName()); chatMessageViewHolder.messageText.setText(chatMessage.getMessage()); } }; recycler.setAdapter(mAdapter); 

и он отлично работает, но теперь он больше не работает, есть ли обновление в новой версии FirebaseUi которое не позволяет мне повторно использовать этот код сейчас?

Я пробовал это в своем проекте

  @Override protected void onStart() { super.onStart(); FirebaseRecyclerAdapter<BlogModel, BlogListViewHolder> adapter = new FirebaseRecyclerAdapter<BlogModel, BlogListViewHolder>(BlogModel.class, android.R.layout.two_line_list_item, BlogListViewHolder.class, mDatabaseReference) { public void populateViewHolder(BlogListViewHolder blogListViewHolder, BlogModel blogModel, int position) { blogListViewHolder.postTitle.setText(blogModel.getPostTitle()); blogListViewHolder.postDesc.setText(blogModel.getPostDesc()); } }; mBlogList.setAdapter(adapter); } 

и Android Studio дает сообщение о том, что вы должны реализовать onCreateViewHolder,onBindViewHolder Method.

Класс BlogListViewHolder

 public static class BlogListViewHolder extends RecyclerView.ViewHolder { ImageView postImage; TextView postTitle; TextView postDesc; public BlogListViewHolder(View view) { super(view); postImage = view.findViewById(R.id.blog_image_id); postTitle = view.findViewById(R.id.blog_title_id); postDesc = view.findViewById(R.id.blog_desc_id); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); } } 

Я использую эту зависимость

 dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.0.2' compile 'com.google.firebase:firebase-auth:11.4.2' compile 'com.google.firebase:firebase-database:11.4.2' compile 'com.google.firebase:firebase-storage:11.4.2' compile 'com.firebaseui:firebase-ui-database:3.1.0' compile 'com.firebaseui:firebase-ui-firestore:3.1.0' compile 'com.firebaseui:firebase-ui-auth:3.1.0' compile 'com.firebaseui:firebase-ui-storage:3.1.0' testCompile 'junit:junit:4.12' compile 'com.squareup.picasso:picasso:2.5.2' } apply plugin: 'com.google.gms.google-services' 

    Синтаксис изменился. Раздел документа, излагающий вызовы, приведен здесь:

    https://github.com/firebase/FirebaseUI-Android/blob/master/database/README.md

    Вот файл с градиентом приложения с версиями Firebase Database и FirebaseUI:

     // FirebaseUI for Firebase Realtime Database compile 'com.firebaseui:firebase-ui-database:3.1.0' compile 'com.google.firebase:firebase-database:11.4.2' 

    У меня есть стандартные классы ViewHolder и Model. Я оставлю их для краткости.

    Переменные экземпляра в верхней части моего класса фрагментов:

     private RecyclerView mPeopleRV; private FirebaseRecyclerAdapter<PersonModel, PeopleVH> mPeopleRVAdapter; 

    В onCreateView () моего фрагмента:

     mPeopleRV = v.findViewById(R.id.peopleRV); 

    В onActivityStarted () моего фрагмента есть все действия.

    onCreateViewHolder – это то, где разметка строк раздувается. И bindViewHolder () – это место, где вы заполняете строку данными модели, полученными из Firebase.

    Конструктор адаптера теперь принимает набор опций, которые вы определяете на основе вашего запроса и модели.

      DatabaseReference personsRef = FirebaseDatabase.getInstance().getReference().child("People"); Query personsQuery = personsRef.orderByKey(); mPeopleRV.hasFixedSize(); mPeopleRV.setLayoutManager(new LinearLayoutManager(getActivity())); FirebaseRecyclerOptions personsOptions = new FirebaseRecyclerOptions.Builder<PersonModel>().setQuery(personsQuery, PersonModel.class).build(); mPeopleRVAdapter = new FirebaseRecyclerAdapter<PersonModel, PeopleVH>(personsOptions) { @Override protected void onBindViewHolder(PeopleVH holder, int position, PersonModel model) { holder.setPersonFirstName(model.getFirstName()); holder.setPersonLastName(model.getLastName()); } @Override public PeopleVH onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.single_row_people_rv, parent, false); return new PeopleVH(view); } }; mPeopleRV.setAdapter(mPeopleRVAdapter); 

    Добавлено позже:

    Не забудьте запустить и остановить прослушиватель адаптера в onStart () и onStop ():

     @Override public void onStart() { super.onStart(); mPeopleRVAdapter.startListening(); } @Override public void onStop() { super.onStop(); mPeopleRVAdapter.stopListening(); } 
    Intereting Posts
    Использование функции по умолчанию для интерфейса в Kotlin kotlin: не может получить подтверждение аннотации api Hashmap с типом данных ArrayList (Kotlin)? Конструктор, принимающий конструктивный конструктор в производном классе Котлин Объединение нулевой безопасности и assertNotNull Коммуникация Kotlin приближается из-за нулей при использовании Dagger2 @Nullable аннотация с Kotlin Безопасность локальных переменных потоков Kotlin Идиоматический способ разветвления json в синтаксисе kotlin Пользовательский Джерси ExceptionMapper весной Boot с kotlin Котлин – когда выражение с возвращаемым типом функции Тип свойства – это не тип переопределения не удалось отменить диалог прогресса с помощью метода уклонения в android Какую ниже технологию я должен узнать теперь, когда разработчик Android будет использовать лучшие возможности в ближайшие дни? Обозначение переменной Not Kotlin