Android 如何从FirebaseRecyclerAdapter或Firebase引用中排除项目
我正在进行活动,以显示除我的用户之外的所有其他应用程序用户,我正在使用Java android和Firebase 但我无法从DatabaseReference或FirebaseRecyclerAdapter中排除该项 我的活动看起来像这样 我的数据库如下所示: 我在此活动中的代码如下所示: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();
@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()
方法。无论如何,谢谢。它不仅从适配器中删除了值,还从数据库中删除了值,谢谢您的帮助,但这不是我想要的