问题
In the main Screen of my app I was trying to build a Search View with Edit Text. I have made a recycler view below the search view. My app is a music app. So I want to build a function like when user search any song from firebase then the song name and song artist should be displayed in the recycler view. So i have read a code for do this particular work. But I am facing a problem like In my code there was a FirebaseRecyclerAdapter method which was used to get values from firebase from my search view , but my problem is it was old populateViewHolder
method and I want to convert this method to new on createView
and onBindViewHolderMethod
but i don't know how? So please help me to change this method and I want to do same Search View work. I don't want to change my Firebase Dependencies in my gradle. So finally conclusion is I want to convert the code which was given below to new FirebaseRecyclerAdapter method.
Here is my code :-
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);
So please help me if you have any solution.
回答1:
As the FirebaseUI documentation shows, you first initialize a FirebaseRecyclerOptions
object with the query and class:
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(firebaseSearchQuery, Users.class)
.build();
And you then create a FirebaseRecyclerAdapter
with that options
object and your ViewHolder
class:
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);
And then you call startListening() and stopListening() in the relevant activity lifecycle events.
来源:https://stackoverflow.com/questions/59825571/how-to-convert-firebase-old-adapter-method-to-new-adapter-method