美文网首页Android 开发Android开发程序员
解决 RecyclerView 隐藏整个 Item 后, 该 I

解决 RecyclerView 隐藏整个 Item 后, 该 I

作者: 月色丶Heaven | 来源:发表于2017-09-05 18:50 被阅读259次

    今天在做 Heaven 项目时遇到的一个问题,在网上搜了一下,参考文章很少只提供了下面这个在 ViewHolder 中重新设置 Item 的宽高的方法,一般在 Item 的根布局中会设置marginTop 或者 marginBottom,因此不能解决这个问题,就写下来给大家一个解决方案。

    class ViewHolder extends RecyclerView.ViewHolder {
    
        ViewHolder(View itemView) {
            super(itemView);
        }
    
        public void setVisibility(boolean visible) {
            RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();
            if (visible) {
                param.height = LinearLayout.LayoutParams.WRAP_CONTENT;
                param.width = LinearLayout.LayoutParams.MATCH_PARENT;
                itemView.setVisibility(View.VISIBLE);
            } else {
                itemView.setVisibility(View.GONE);
                param.height = 0;
                param.width = 0;
            }
            itemView.setLayoutParams(param);
        }
    }
    

    如果 Item 根布局中有使用 marginTop 或者 layout_marginBottom,还是会存在间隔;
    如果要使用 marginTop 或者 layout_marginBottom, 需要修改为 paddingTop / paddingBottom

    Heaven 项目是将开源项目 CloudReader 从 Retrofit + RxJava + MVVM + databinding 模式改成 MVP+Dagger2+Retrofit+RxJava 架构的项目

      Heaven 项目已上传至 github:https://github.com/chengHeaven/Heaven
      该项目的 MVP 模式与其他的 MVP 模式有些不一样的地方,稍后几天会将该项目详细思路写下来,欢迎大家关注我,以便能及时看到文章。

      如果觉得这篇文章对你有帮助,希望各位能够点一个关注或者喜欢。

    关于我:

    相关文章

      网友评论

      • yangyirunning:RecyclerView.LayoutParams param = (RecyclerView.LayoutParams) itemView.getLayoutParams();

        这一行强转的时候有时会报类型转换错误,怎么破?
      • viewholder:解决 RecyclerView 隐藏整个 Item 后, 该 Item 还会占位的问题,这个文章你解决了吗?为什么我会报错
        月色丶Heaven:解决了

      本文标题:解决 RecyclerView 隐藏整个 Item 后, 该 I

      本文链接:https://www.haomeiwen.com/subject/vmfpjxtx.html