如何将 Firebase 旧适配器方法转换为新适配器方法?
How to convert Firebase Old Adapter method to New Adapter method?
在我的应用程序的主屏幕中,我试图构建一个带有编辑文本的搜索视图。我在搜索视图下方制作了一个回收站视图。我的应用程序是一个音乐应用程序。所以我想构建一个功能,比如当用户从 firebase 搜索任何歌曲时,歌曲名称和歌曲艺术家应该显示在回收站视图中。所以我已经阅读了执行此特定工作的代码。但是我遇到了一个问题,比如在我的代码中有一个 FirebaseRecyclerAdapter 方法用于从我的搜索视图中获取 firebase 的值,但我的问题是它是旧的 populateViewHolder
方法,我想将此方法转换为新方法在 createView
和 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);
所以如果你有任何解决办法,请帮助我。
如 FirebaseUI documentation 所示,您首先使用查询和 class:
初始化一个 FirebaseRecyclerOptions
对象
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, Users.class)
.build();
然后您使用 options
对象和您的 ViewHolder
class:
创建一个 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 搜索任何歌曲时,歌曲名称和歌曲艺术家应该显示在回收站视图中。所以我已经阅读了执行此特定工作的代码。但是我遇到了一个问题,比如在我的代码中有一个 FirebaseRecyclerAdapter 方法用于从我的搜索视图中获取 firebase 的值,但我的问题是它是旧的 populateViewHolder
方法,我想将此方法转换为新方法在 createView
和 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);
所以如果你有任何解决办法,请帮助我。
如 FirebaseUI documentation 所示,您首先使用查询和 class:
初始化一个FirebaseRecyclerOptions
对象
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, Users.class)
.build();
然后您使用 options
对象和您的 ViewHolder
class:
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.