firebase - 从 firebase 获取数据并绑定到回收站视图
问题描述
首先我使用这个版本的数据库:实现 'com.firebaseui:firebase-ui-database:6.2.1' 我尝试这段代码并在粗体语句处出错 错误是:Expected 1 arguments but found 4. code is : private void加载菜单(){
FirebaseRecyclerAdapter<Category, MenuViewHolder> adapter=new FirebaseRecyclerAdapter<Category, MenuViewHolder>**(Category.class,R.layout.menu_item,MenuViewHolder.class,category)** {
@Override
protected void onBindViewHolder(@NonNull MenuViewHolder holder, int position, @NonNull Category model) {
}
@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
return null;
}
}}
编辑一: private void loadMenu() {
FirebaseRecyclerOptions<Category> options=new FirebaseRecyclerOptions.Builder<Category>()
.setQuery(category,Category.class)
.build();
FirebaseRecyclerAdapter adapter= new FirebaseRecyclerAdapter<Category, MenuViewHolder>(options) {
@NonNull
@Override
public MenuViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView= LayoutInflater.from(parent.getContext())
.inflate(R.layout.menu_item,parent,false);
return new MenuViewHolder(itemView);
}
@Override
protected void onBindViewHolder(@NonNull MenuViewHolder viewHolder, int position, @NonNull Category model) {
viewHolder.txtMenuName.setText(model.getName());
Picasso.with(getBaseContext()).load(model.getImage())
.into(viewHolder.imageView);
final Category clickItem=model;
viewHolder.setItemClickListener...
}
}
};
}
公共类 MenuViewHolder 扩展 RecyclerView.ViewHolder 实现 View.OnClickListener {
public TextView txtMenuName;
public ImageView imageView;
private ItemClickListener itemClickListener;
public MenuViewHolder(@NonNull View itemView) {
super(itemView);
txtMenuName=(TextView)itemView.findViewById(R.id.menu_name);
imageView= (ImageView)itemView.findViewById(R.id.menu_image);
}
@Override
public void onClick(View view) {
}
}
解决方案
FirebaseUI 的最新版本 (3.x) 实现了与以前版本不同的初始化 FirebaseRecyclerAdapter 的方法。从使用 FirebaseRecyclerAdapter 文档:
首先,通过构建 FirebaseRecyclerOptions 来配置适配器。在这种情况下,我们将继续我们的聊天示例:
FirebaseRecyclerOptions<Chat> options =
new FirebaseRecyclerOptions.Builder<Chat>()
.setQuery(query, Chat.class)
.build();
接下来创建 FirebaseRecyclerAdapter 对象。您应该已经有一个 ViewHolder 子类来显示每个项目。
因此,对于您的示例,您需要执行以下操作:
FirebaseRecyclerOptions<image_details> options =
new FirebaseRecyclerOptions.Builder<image_details>()
.setQuery(myRef, image_details.class)
.build();
FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<image_details, BlogViewHolder>(options) {
@Override
public BlogViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.individual_row, parent, false);
return new BlogViewHolder(view);
}
@Override
protected void onBindViewHolder(BlogViewHolder holder, int position, image_details model) {
// Bind the image_details object to the BlogViewHolder
// ...
}
};
最后,FirebaseRecyclerAdapter 使用事件侦听器来监控 Firebase 查询的更改。要开始侦听数据,请调用 adapter.startListening() 和 adapter.stopListening() 以停止侦听器。建议分别在 onStart() 和 onStop() 中调用它们。FirebaseRecyclerAdapter 生命周期文档中提供了有关这方面的更多详细信息。取自:firebaserecycleradapter() 不能应用于 FirebaseRecyclerAdapter
推荐阅读
- c++ - 为什么此代码在交换值后输出垃圾值?
- javascript - React Native 视频和图像播放器内存泄漏
- python - 使用 Python 扩展和 FFmpeg 时出现“分段错误(核心转储)”的原因
- javascript - Jest mock 静态成员的类方法
- excel - 如何使我的子过程动态循环通过一个范围?
- azure - 使用 Azure Devops CICD 使用 Terraform 部署 Azure SQL 数据对象
- ios - UITextField:attributeText 在 resignFirstResponder 时无法正常工作
- kubernetes - Kubernetes 作业和部署之间有什么区别
- conditional-statements - 根据谷歌电子表格上的名称计算总次数值
- ffmpeg - 不支持 ffmpeg 编解码器,找不到支持的设备