android – 我在FirebaseRecyclerAdapter类中找不到populateViewHolder方法

android – 我在FirebaseRecyclerAdapter类中找不到populateViewHolder方法,第1张

概述我想在我的项目中使用FirebaseRecyclerAdapter,并在之前的Project中使用了此代码段 FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder> adapter = new FirebaseRecyclerAdapter<ChatMessage, ChatMessageViewHolder>(ChatMessage 我想在我的项目中使用FirebaseRecyclerAdapter,并在之前的Project中使用了此代码段
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,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方法.

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'
解决方法 语法已更改.概述电话的doc部分在这里:

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

以下是使用Firebase数据库和firebaseui版本的应用程序gradle文件:

// firebaseui for Firebase Realtime Databasecompile 'com.firebaseui:firebase-ui-database:3.1.0'compile 'com.Google.firebase:firebase-database:11.4.2'

我定义了标准的VIEwHolder和Model类.为了简洁,我会把它们留下来.

我的Fragment类顶部的实例变量:

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()中启动和停止适配器侦听器:

@OverrIDepublic voID onStart() {    super.onStart();    mPeopleRVAdapter.startListening();}@OverrIDepublic voID onStop() {    super.onStop();    mPeopleRVAdapter.stopListening();}
总结

以上是内存溢出为你收集整理的android – 我在FirebaseRecyclerAdapter类中找不到populateViewHolder方法全部内容,希望文章能够帮你解决android – 我在FirebaseRecyclerAdapter类中找不到populateViewHolder方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1131234.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存