FirebaseRecyclerAdapter的问题.Firebase UI 1.2.0,而4.3.1



我当前正在遵循一个教程,将实时位置跟踪添加到我的应用程序。自从教程的创建者使用firebase-ui-auth以来,我遇到了一些问题:1.2.0与最新版本的firebase-ui-auth相比:4.3.1。

指导教程的链接如下:https://www.youtube.com/watch?v=17hqlbkux-e< - 我目前被困在27:30

我知道FirebaseRecyclerAdapter已收到一些更改,将PropulateViewHolder更改为OnBindViewHolder&OnCreateviewHolder。

我在遵循本教程时遇到的问题是,原始代码如下:

 private void updateList() {
        adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
                UserRace.class,
                R.layout.user_layout,
                OnlineListViewHolder.class,
                counterRef
        ) {
            @Override
            protected void populateViewHolder(OnlineListViewHolder viewHolder, UserRace model, int position) {
                viewHolder.txtEmail.setText(model.getEmail());
            }
        };
        adapter.notifyDataSetChanged();
        onlineList.setAdapter(adapter);
    }

版本4.3.1被写为:

private void updateList() {
        adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
                UserRace.class,
                R.layout.user_layout,
                OnlineListViewHolder.class,
                counterRef
        ) {
            @Override
            protected void onBindViewHolder(@NonNull OnlineListViewHolder holder, int position, @NonNull UserRace model) {
                holder.txtEmail.setText(model.getEmail());
            }
            @NonNull
            @Override
            public OnlineListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
                return null;
            }
        };
        adapter.notifyDataSetChanged();
        onlineList.setAdapter(adapter);
    }

我在以下几行中收到此版本的代码中的错误:

                UserRace.class,
                R.layout.user_layout,
                OnlineListViewHolder.class,
                counterRef
        ) {

红线将出现在括号内的值下,并指出:firebaserecycycleradapter中的firebaserecycleradapter()不能应用于:预期参数:实际参数:

使用版本1.2.0避免此错误允许该代码的此错误功能,但与我的应用程序的其他区域混乱。

我有什么办法可以在括号内包含所需的数据而不会收到错误?我试图研究这个问题,但我没有精通Java,因此我无法找到解决方案。

如果我说的话不清楚,请告诉我。

所有帮助将不胜感激。

该代码已被弃用,现在您需要使用FirebaseRecyclerOptions来设置RecyClerview Adapter,请在此处阅读文档

https://github.com/firebase/firebaseui-android/blob/master/database/readme.md

现在,而不是这样做

  adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(
                UserRace.class,
                R.layout.user_layout,
                OnlineListViewHolder.class,
                counterRef
        )

您将需要像这样

首先,通过构建firebaseRecycleroptions

来配置适配器
FirebaseRecyclerOptions<UserRace> options =
                new FirebaseRecyclerOptions.Builder<UserRace>()
                        .setQuery(query, UserRace.class)
                        .build();

接下来创建FirebaseRecyclerAdapter对象。您应该已经有一个用于显示每个项目的视图持有人子类。

adapter = new FirebaseRecyclerAdapter<UserRace, OnlineListViewHolder>(options) {
    @Override
    public OnlineListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Create a new instance of the ViewHolder, in this case we are using a custom
          View view = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.yourCustomLayout, parent, false);
          return new OnlineListViewHolder(view);
    }
    @Override
    protected void onBindViewHolder(OnlineListViewHolder holder, int position, UserRace model) {
        // Bind the views
        // ...
    }
};

,最后但并非最不重要的一点是,这是一个非常重要的部分,请在onStart()onStop()方法

上执行此操作。
@Override
protected void onStart() {
    super.onStart();
    adapter.startListening();
}
@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

这是一个例子,您必须适合用例

最新更新