如何从FirebaseRecyclerAdapter或Firebase Reference Android中排除项目

时间:2017-11-25 09:38:22

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

我正在使用Activity来展示除我的用户之外的所有其他应用用户以及我使用带有Firebase的Java android。

但我无论如何都无法从DatabaseReference或FirebaseRecyclerAdapter中排除项目。

我的活动看起来像这样

enter image description here

我的数据库看起来像这样:

enter image description here

此活动中的代码如下所示:

@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);
}

如果您有解决方案,我将感激不尽。

2 个答案:

答案 0 :(得分:0)

FirebaseUI FirebaseRecyclerAdapter直接表示基础Query中的数据或存在于Firebase数据库中的某个位置。要从适配器中排除某个项目,您必须先将其从Firebase位置排除,或确保它不再与该特定查询匹配。

要实现此目的,您可以使用以下代码行:

yourAdapter.getRef(position).removeValue();

答案 1 :(得分:0)

我曾经遇到过类似的事情,我是怎么做到的。

第一件事是在users_single_layout xml文件中提供父布局和ID。 在视口中引用父布局; 然后通过以下方式隐藏文件的所有内容:

android:visibility="gone"

完成后,在FirebaseRecyclerAdapter中设置if语句: 检查以下代码:

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);