How to convert Firebase Old Adapter method to New Adapter method?

不打扰是莪最后的温柔 提交于 2020-07-10 07:30:08

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!