大家好,我目前正在尝试根据Firebase数据库中的唯一用户ID隐藏我的recyclerview中的某些物品。由于我的recyclerview在Firebase中显示参考,因此我只想显示其他用户添加的项目。每个项目都有对添加项目的人的引用,因此我考虑使用此方法来过滤列表。我正在使用FirebaseAdapter,所以我在OnBindViewHolder中合并了以下内容以隐藏该项目:
if (!item.getID.equals(user.getUid())) {
//Set displayName and amount
holder.displayName.setText(bet.getDisplayName());
holder.amount.setText(String.format(Locale.ENGLISH, "%d", bet.getAmount()));
else{
holder.itemView.setVisibility(View.GONE);
holder.itemView.setLayoutParams(new RecyclerView.LayoutParams(0, 0));
}
但是现在项目装饰器仍会绘制边框,因此我尝试覆盖其他类似问题所建议的getitemoffsets:
DividerItemDecoration dividerItemDecoration =
new DividerItemDecoration(betRecyclerView.getContext(),
recyclerLayoutManager.getOrientation()){
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
if(view.getVisibility() != View.GONE){
super.getItemOffsets(outRect, view, parent, state);
} else{
outRect.set(0,0,0,0);
}
}
@Override
public void onDraw(Canvas c, RecyclerView parent, RecyclerView.State state) {
super.onDraw(c, parent, state);
}
};
这使我得到以下结果,与覆盖getitemoffset方法之前的行相比,行的发音不那么清晰,但是您仍然可以看到哪些部分具有隐藏项。那么,我如何完全摆脱较粗的线条,使隐藏的物品完全消失?我也愿意接受其他建议,例如查询数据库,但是从我的研究看来,您无法查询Firebase以排除某个值。