Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/233.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何从FirebaseRecyclerAdapter或Firebase引用中排除项目_Android_Firebase_Firebase Realtime Database_Android Recyclerview - Fatal编程技术网

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

Android 如何从FirebaseRecyclerAdapter或Firebase引用中排除项目,android,firebase,firebase-realtime-database,android-recyclerview,Android,Firebase,Firebase Realtime Database,Android Recyclerview,我正在进行活动,以显示除我的用户之外的所有其他应用程序用户,我正在使用Java android和Firebase 但我无法从DatabaseReference或FirebaseRecyclerAdapter中排除该项 我的活动看起来像这样 我的数据库如下所示: 我在此活动中的代码如下所示: @Override public void onStart() { super.onStart(); database = FirebaseDatabase.getInstance();

我正在进行活动,以显示除我的用户之外的所有其他应用程序用户,我正在使用Java android和Firebase

但我无法从DatabaseReference或FirebaseRecyclerAdapter中排除该项

我的活动看起来像这样

我的数据库如下所示:

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

@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);
}
@覆盖
public void onStart(){
super.onStart();
database=FirebaseDatabase.getInstance();
myRef=database.getReference().child(“用户”);
FirebaseRecyclerAdapter FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(Users.class,R.layout.Users\u single\u layout,RecyclerViewWholder.class,myRef){
@凌驾
受保护的void populateViewHolder(RecycleServiceWholder viewHolder,用户模型,int位置){
viewHolder.setDisolayName(model.getDisplay_name());
viewHolder.setStatus(model.getStatus());
setImage(model.getImager_thumb(),getContext());
frinds_relative.setVisibility(视图不可见);
最终字符串users_id=getRef(position).getKey();
viewHolder.mview.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图目标=新意图(getActivity(),user_profile.class);
target.putExtra(“profile\u id”,users\u id);
星触觉(目标);
}
});
}
};
用户\u recycler.setAdapter(firebaseRecyclerAdapter);
}

如果你有解决办法,我将不胜感激

FirebaseUI
FirebaseRecyclerAdapter
是底层
查询中数据的直接表示,或者存在于Firebase数据库中的某个位置。要从适配器中排除项,您必须首先从Firebase位置排除它,或者确保它不再与特定查询匹配

要实现这一点,可以使用以下代码行:

yourAdapter.getRef(position).removeValue();

我曾经遇到过类似的事情,我是如何做到的

第一件事是在users\u single\u layout xml文件中给出父布局和id; 参照viewholder中的父布局; 然后通过以下方式隐藏文件的所有内容:

android:visibility="gone"
完成后,在FirebaseRecyclerAdapter中设置and 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);
users\u recycler=new FirebaseRecyclerAdapter FirebaseRecyclerAdapter=new FirebaseRecyclerAdapter(users.class,R.layout.users\u single\u layout,recycleriveWholder.class,myRef){
@凌驾
受保护的void populateViewHolder(RecycleServiceWholder viewHolder,用户模型,int位置){
if(适配器.getRef(位置).getKey.equals(当前UID){
viewholder.thelayout.setVisibility(View.GONE);
}否则{
viewHolder.setDisolayName(model.getDisplay_name());
viewHolder.setStatus(model.getStatus());
setImage(model.getImager_thumb(),getContext());
frinds_relative.setVisibility(视图不可见);
最终字符串users_id=getRef(position).getKey();
viewHolder.mview.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
意图目标=新意图(getActivity(),user_profile.class);
target.putExtra(“profile\u id”,users\u id);
星触觉(目标);
}
});
}
}
};
用户\u recycler.setAdapter(firebaseRecyclerAdapter);

exclude item?。比如什么项目?我的意思是从列表中隐藏该项目,比如添加条件而不是EqualAfik,
FirebaseRecyclerAdapter
不提供这样的功能。你必须根据需要创建自定义适配器。啊,谢谢,但我认为它太繁忙了!!FirebaseRecyclerAdapter没有remove()functionyourAdapter.getRef(position)返回一个
DatabaseReference
对象,该对象具有
removeValue()
方法。无论如何,谢谢。它不仅从适配器中删除了值,还从数据库中删除了值,谢谢您的帮助,但这不是我想要的