您如何在recyclerview中隐藏特定项目并删除其splitritemdecoration?

时间:2018-08-19 15:42:51

标签: android android-recyclerview recycler-adapter firebaseui

大家好,我目前正在尝试根据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以排除某个值。

screenshot

0 个答案:

没有答案