How to Exclude item from FirebaseRecyclerAdapter or Firebase Reference Android

谁说胖子不能爱 提交于 2020-01-04 05:47:06

问题


I'm working on Activity to show all the others app users except my user and i'm using Java android with Firebase .

But i cant find anyway to exclude item from DatabaseReference or from FirebaseRecyclerAdapter .

My Activity look like this

My Database look like this :

My code inside this Activity looks like below :

@Override
public void onStart() {
    super.onStart();
    database = FirebaseDatabase.getInstance();
     myRef = database.getReference().child("users");
    FirebaseRecyclerAdapter<Users,RecyclerViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, RecyclerViewHolder>(Users.class , R.layout.users_single_layout ,RecyclerViewHolder.class,myRef  ) {
        @Override
        protected void populateViewHolder(RecyclerViewHolder viewHolder, Users model, int position) {
                 viewHolder.setDisolayName(model.getDisplay_name());
                viewHolder.setStatus(model.getStatus());
                viewHolder.setImage(model.getImager_thumb(), getContext());
                frinds_relative.setVisibility(View.INVISIBLE);
                final  String users_id = getRef(position).getKey();
                viewHolder.mview.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Intent target = new Intent(getActivity() , user_profile.class);
                        target.putExtra("profile_id" , users_id) ;
                        startActivity(target);
                    }
                });


        }
    };
    users_recycler.setAdapter(firebaseRecyclerAdapter);
}

I will be thankful if you have the solution .


回答1:


I faced something similar once and how i did it was..

First thing is to give the parent layout and id in the users_single_layout xml file; Reference the parent layout in the viewholder; Then hide all the content of file by :

android:visibility="gone"

When That is done, You set and if statement in your FirebaseRecyclerAdapter: Check the Code Below:

users_recycler = new FirebaseRecyclerAdapter<Users,RecyclerViewHolder> firebaseRecyclerAdapter = new FirebaseRecyclerAdapter<Users, RecyclerViewHolder>(Users.class , R.layout.users_single_layout ,RecyclerViewHolder.class,myRef  ) {
    @Override
    protected void populateViewHolder(RecyclerViewHolder viewHolder, Users model, int position) {

            if (adapter.getRef(position).getKey.equals(currentUid){

                 viewholder.thelayout.setVisibility(View.GONE);

             } else {

                 viewHolder.setDisolayName(model.getDisplay_name());
            viewHolder.setStatus(model.getStatus());
            viewHolder.setImage(model.getImager_thumb(), getContext());
            frinds_relative.setVisibility(View.INVISIBLE);
            final  String users_id = getRef(position).getKey();
            viewHolder.mview.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent target = new Intent(getActivity() , user_profile.class);
                    target.putExtra("profile_id" , users_id) ;
                    startActivity(target);
                }
            });

             }


    }
};
users_recycler.setAdapter(firebaseRecyclerAdapter);



回答2:


The FirebaseUI FirebaseRecyclerAdapter is a direct representation of the data in the underlying Query or exists at a location in a Firebase database. To exclude an item from an adapter, you have to exclude it first from the Firebase location or ensure it doesn't match that particular query anymore.

To achieve this, you can use the following line of code:

yourAdapter.getRef(position).removeValue();


来源:https://stackoverflow.com/questions/47484521/how-to-exclude-item-from-firebaserecycleradapter-or-firebase-reference-android

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