【问题标题】:FirebaseRecyclerAdapter cannot be applied with two optionsFirebaseRecyclerAdapter 不能使用两个选项
【发布时间】:2020-03-20 17:28:00
【问题描述】:

我在下面有FirebaseRecyclerAdapter 声明:

    private void updateList() {
        adapter = new FirebaseRecyclerAdapter<User, ListOnlineViewHolder>(
                User.class,
                R.layout.user_layout,
                ListOnlineViewHolder.class,
                counterRef
        ) {
            @Override
            protected void onBindViewHolder(@NonNull ListOnlineViewHolder holder, int position, @NonNull User model) {
                holder.txtEmail.setText((model.getEmail()));
            }

            @NonNull
            @Override
            public ListOnlineViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
                return null;
            }
        };
        adapter.notifyDataSetChanged();
        listOnline.setAdapter(adapter);
    }

adapter = new FirebaseRecyclerAdapter&lt;User, ListOnlineViewHolder&gt; 的声明给出了 FirebaseRecyclerAdapter cannot be applied. 的错误我知道我需要构建 FirebaseRecyclerOptions. 如何构建 2 个选项?

【问题讨论】:

  • 你是什么意思 2 个选项
  • 我必须声明FirebaseRecyclerOptions&lt;Category&gt; options = new FirebaseRecyclerOptions.Builder&lt;Category&gt;() .setQuery(category, Category.class) .build(); 两次吗?
  • 只有一次你声明recycleradapter
  • 那我该声明哪一个? User.class,, ListOnlineViewHolder.class?

标签: java android firebase firebaseui


【解决方案1】:

首先,通过构建 FirebaseRecyclerOptions 来配置适配器。例如:

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

接下来创建 FirebaseRecyclerAdapter 对象。您应该已经有一个 ViewHolder 子类来显示每个项目。例如:

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<User, ListOnlineViewHolder>(options) {
    @Override
    public ListOnlineViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        // Create a new instance of the ViewHolder, in this case we are using a custom
        // layout called R.layout.message for each item
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.message, parent, false);

        return new ListOnlineViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(ListOnlineViewHolder holder, int position, User model) {

    }
};

点击此处了解更多信息:

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

【讨论】:

  • 在这种情况下,父母是什么?
  • Parent 是 viewgroup 类型,你用它来调用 getContext() 因为 from 方法需要一个 context stackoverflow.com/questions/10641144/…
  • 你检查过答案了吗?
  • 是的,我做到了。感谢您的回答。但是我在哪里把ListOnlineViewHolder.class, counterRef 放在新版本的FirebaseRecyclerAdapter 中呢?
  • 这里.setQuery(counterRef, User.class),关于ListOnlineViewHolder.class,只需复制答案
猜你喜欢
  • 2018-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-17
  • 1970-01-01
相关资源
最近更新 更多