从适配器末端向回收者视图添加项目装饰

时间:2019-05-07 09:20:28

标签: android

我在@PostConstruct public void init() { TimeZone.setDefault(TimeZone.getTimeZone("Asia/Kolkata")); } 上使用DividerItemDecoration。它在两个方向上都可以正常工作,但是它在最后一行项目的底部添加了分隔线,我不希望这样。我看到GridLayout具有以下参数:

RecyclerView.addItemDecoration

因此,我尝试通过@param index Position in the decoration chain to insert this decoration at. If this value is negative the decoration will be added at the end. 来考虑将装饰从底部到顶部添加,而跳过适配器的最后2个项目。但事实并非如此。

我可以不创建-3的副本来简单地更改DividerItemDecoration中的循环迭代吗?

1 个答案:

答案 0 :(得分:1)

创建一个新的班级

private class NoBottomDividerItemDecoration extends DividerItemDecoration {

    public NoBottomDividerItemDecoration(Context context, int orientation) {
        super(context, orientation);
    }

    @Override
    public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
        super.getItemOffsets(outRect, view, parent, state);
        if (parent.getChildAdapterPosition(view) == parent.getAdapter().getItemCount() - 1) {
            outRect.set(0, 0, 0, 0);
        }        
    }
}

使用此类代替DividerItemDecoration。这将删除最后的分隔线。