为啥我不能使用 populateViewHolder 覆盖方法?

Posted

技术标签:

【中文标题】为啥我不能使用 populateViewHolder 覆盖方法?【英文标题】:Why I cant use the populateViewHolder override method?为什么我不能使用 populateViewHolder 覆盖方法? 【发布时间】:2018-05-02 01:10:24 【问题描述】:

我尝试在我使用过 FirebaseRecylerAdapter 的方法中从 database 检索数据,如下所示

@Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) 
        super.onViewCreated(view, savedInstanceState);

        FirebaseRecyclerAdapter<AllUsers, AllUsersViewHolder> firebaseRecyclerAdapter;
    

    public static class AllUsersViewHolder extends RecyclerView.ViewHolder 

        View view;

        public AllUsersViewHolder(View itemView) 
            super(itemView);
            view = itemView;
        
    

当我使用 firebaseRecyclerAdapter = new FirebaseRecyclerAdapter 时,它不会给我 populateViewHolder 方法,只需给出如下所示的方法

FirebaseRecyclerAdapter<AllUsers, AllUsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<AllUsers, AllUsersViewHolder>() 
            @Override
            protected void onBindViewHolder(AllUsersViewHolder holder, int position, AllUsers model) 

            

            @Override
            public AllUsersViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
                return null;
            
        ;

谁能告诉我为什么会这样

【问题讨论】:

您使用的是什么版本的 firebaserecycleradapter(在其编写的 gradle 中) 编译'com.firebaseui:firebase-ui-database:3.1.0' firebaserecycleradapter.java 类中没有填充方法 true 我会回答你如何,在旧版本中你可以使用 populateviewholder 【参考方案1】:

Firebase...Adapter 类的构造函数在 FirebaseUI 版本 3 中已更改。鉴于此查询:

Query query = FirebaseDatabase.getInstance()
    .getReference()
    .child("users")
    .equalTo(name);

如果您使用的是版本 3 或更高版本,则使用 FirebaseRecyclerOptions

 FirebaseRecyclerOptions<model_class_name> options =
            new FirebaseRecyclerOptions.Builder<model_class_name>()
                    .setQuery(query, model_class_name.class)
                    .build();

然后声明一个 FirebaseRecyclerAdapter:

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Chat, ChatHolder>(options) 

如上所述添加变量options。是FirebaseRecyclerOptions类的变量

然后要添加项目,您必须使用 onBindViewHolder,因为它是最新版本的 firebase ui:

 @Override
protected void onBindViewHolder(Holder holder, int position, model_class_name model) 
    // Bind the class object to the holder
    // ...

更多信息请查看:https://github.com/firebase/FirebaseUI-android/tree/master/database

【讨论】:

@HemalHerath 好吧,在 firebaserecycleradapter 中添加一个变量(选项或任何你想要的名称),你没有那个 注意:上面setQuery你可能要写这个.setLayout(R.layout.your_layoutrow)

以上是关于为啥我不能使用 populateViewHolder 覆盖方法?的主要内容,如果未能解决你的问题,请参考以下文章

我在 FirebaseRecyclerAdapter 类中找不到 populateViewHolder 方法

为啥我不能使用类名找到元素?

为啥我不能使用开机功能?

为啥我不能使用 AsyncMethodCaller?

为啥我不能使用 composer 创建 Laravel 项目?

为啥我不能在这里使用 mockResolvedValue?