【问题标题】:How to convert Firebase Old Adapter method to New Adapter method?如何将 Firebase 旧适配器方法转换为新适配器方法?
【发布时间】:2020-01-20 14:41:19
【问题描述】:

在我的应用程序的主屏幕中,我试图构建一个带有编辑文本的搜索视图。我在搜索视图下方制作了一个回收站视图。我的应用程序是一个音乐应用程序。所以我想构建一个功能,比如当用户从 firebase 搜索任何歌曲时,歌曲名称和歌曲艺术家应该显示在回收站视图中。所以我已经阅读了做这项特殊工作的代码。但是我遇到了一个问题,例如在我的代码中有一个 FirebaseRecyclerAdapter 方法,该方法用于从我的搜索视图中从 firebase 获取值,但我的问题是它是旧的 populateViewHolder 方法,我想将此方法转换为 @ 上的新方法987654322@ 和 onBindViewHolderMethod 但我不知道怎么做?所以请帮我改变这个方法,我想做同样的搜索视图工作。我不想在我的 gradle 中更改我的 Firebase 依赖项。所以最后的结论是我想将下面给出的代码转换为新的 FirebaseRecyclerAdapter 方法。

这是我的代码:-

 Query firebaseSearchQuery = mUserDatabase.orderByChild("name").startAt(searchText).endAt(searchText + "\uf8ff");

        FirebaseRecyclerAdapter<Users, UsersViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(

                Users.class,
                R.layout.list_layout,
                UsersViewHolder.class,
                firebaseSearchQuery

        ) {
            @Override
            protected void populateViewHolder(UsersViewHolder viewHolder, Users model, int position) {


                viewHolder.setDetails(getApplicationContext(), model.getName(), model.getStatus(), model.getImage());

            }
        };

        mResultList.setAdapter(firebaseRecyclerAdapter);

所以如果您有任何解决方案,请帮助我。

【问题讨论】:

  • 您使用的是非常旧版本的 Firebase-UI 库。您应该使用最新的。

标签: android firebase firebase-realtime-database android-recyclerview firebaseui


【解决方案1】:

正如FirebaseUI documentation 所示,您首先使用查询和类初始化FirebaseRecyclerOptions 对象:

FirebaseRecyclerOptions<Users> options =
        new FirebaseRecyclerOptions.Builder<Users>()
                .setQuery(firebaseSearchQuery, Users.class)
                .build();

然后,您使用该 options 对象和您的 ViewHolder 类创建一个 FirebaseRecyclerAdapter

FirebaseRecyclerAdapter adapter = new FirebaseRecyclerAdapter<Users, UsersViewHolder>(options) {
    @Override
    public ChatHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.list_layout, parent, false);

        return new UsersViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(UsersViewHolder holder, int position, Users model) {
        viewHolder.setDetails(getApplicationContext(), model.getName(), model.getStatus(), model.getImage());
    }
};
mResultList.setAdapter(firebaseRecyclerAdapter);

然后你call startListening() and stopListening() in the relevant activity lifecycle events

【讨论】:

  • 我试过你的代码,但它没有从 firebase 加载数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-24
  • 2021-12-05
  • 1970-01-01
  • 2021-07-16
相关资源
最近更新 更多