为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Android 3.1 及更高版本中实现 Firebase Recycler

如何在 Android 3.1 及更高版本中实现 Firebase Recycler

拉莫斯之舞 2022-07-20 19:39:28
基本上,我想做的是使用 a并用我的自定义设计FirebaseRecyclerAdapter填充. 较新版本的代码已更改,因此,我尝试实现它但没有奏效。这是我一年前用来编写的代码,它运行良好并填充了我的:RecyclerViewCardViewRecyclerViewFirebaseRecyclerAdapter<DataClass,DataViewHolder> FBRA= new FirebaseRecyclerAdapter<DataClass, DataViewHolder>(            DataClass,            R.layout.myCardView,            DataViewHolder.class,            databaseReference    ) {        @Override        protected void populateViewHolder(DataViewHolder viewHolder, DataClass model, int position) {            viewHolder.setTitle(model.gettitle());            viewHolder.setDate(model.getDate());        }   };   myRecyclerView.setAdapter(FBRA);现在我们必须使用这样的东西,但问题是这段代码没有填充我的recyclerView(我需要在此处进行哪些更改才能recyclerView使用我的 cardView 填充我的?)@Overrideprotected void onStart() {    super.onStart();    Query query = FirebaseDatabase.getInstance()            .getReference()            .child("Official_Services");    FirebaseRecyclerOptions<ServiceClass> options = new FirebaseRecyclerOptions.Builder<ServiceClass>()            .setQuery(query, ServiceClass.class)            .build();    FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder> FBRA = new FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder>(options) {        @NonNull        @Override        public ServiceViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int i) {            View view = LayoutInflater.from(HomeActivity.this).inflate(R.layout.service_card, parent, false);            return new ServiceViewHolder(view);        }        @Override        protected void onBindViewHolder(@NonNull ServiceViewHolder holder, int position, @NonNull ServiceClass model) {            holder.setServiceName(model.getServiceName());            holder.setServiceCaption(model.getServiceCaption());        }    };    mServiceList.setAdapter(FBRA);}这是我的ViewHolder课:public static class ServiceViewHolder extends RecyclerView.ViewHolder {    public ServiceViewHolder(View itemView) {        super(itemView);        View mView = itemView;    }
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

为了能够显示来自 Firebase 实时数据库的数据,您需要开始监听更改,为此您应该在onStart()方法中添加以下代码行:


@Override

protected void onStart() {

    super.onStart();

    FBRA.startListening();

}

要停止监听更改,您需要在onStop()方法中添加以下代码行,如下所示:


@Override

protected void onStop() {

    super.onStop();

    if(FBRA != null) {

        FBRA.stopListening();

    }

}

请从这篇文章中查看我的答案,我已经解释了为什么应该删除监听器。


PS也请不要忘记创建FBRA一个全局变量并FirebaseRecyclerAdapter<ServiceClass, ServiceViewHolder>从对象的声明中删除。


查看完整回答
反对 回复 2022-07-20
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

这更像是一个建议。如果你想继续使用旧方法来填充你的recyclerview,即“populateViewHolder”方法而不是新的“onBindViewHolder”方法,只需使用它;

implementation 'com.firebaseui:firebase-ui:1.0.1'

而不是升级的 firebase-ui 版本


查看完整回答
反对 回复 2022-07-20
  • 2 回答
  • 0 关注
  • 60 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信