美文网首页小技巧程序员Android开发经验谈
解决addItemDecoration添加分割线重复绘制,间隔变

解决addItemDecoration添加分割线重复绘制,间隔变

作者: 八怪不姓丑 | 来源:发表于2018-02-26 11:00 被阅读71次

    recyclerview需要使用addItemDecoration给item添加分割线。

    但是在多层list嵌套的情况下,每次刷新数据,分割线可能都会重复绘制

    首先尝试使用在添加前使用removeItemDecoration,移除掉。但是并没有什么卵用。

    最后还是在实体bean的方法内添加一个用来区分刷新和首次加载的变量。

     public List<ClassRelated> data;
        public List<Article.DataBean> articles;
        public List<QuestionList.DataBean> questions;
        public List<BannerBean> adData;
        public String type;
        public String title;
        public String mode;
        public int divider;
    

    在遍历数据的时候
    给数据源设置是否添加分割线。

    
    private void jsonHomeList(String s,int divider) {
            Type type = new TypeToken<List<HomeList>>() {
            }.getType();
            mHomeLists = new Gson().fromJson(s, type);
            for (int i=0;i<mHomeLists.size();i++){
                mHomeLists.get(i).setDivider(divider);
            }
    //        LogUtils.e(mHomeLists.toString());
            mRootAdapter.setNewData(mHomeLists);
    
        }
    

    最后在adapter中判断

     //解决分割线重复绘制问题
            if (homeList.getDivider()==0){
                rvBig.addItemDecoration(new MyLinearLayoutDivider());
                rvSmail.addItemDecoration(new MyGridDivider());
            }
    

    具体网络请求需要自己实现。

    下拉刷新:

    
       @Override
        public void onRefresh(RefreshLayout refreshlayout) {
            mHomeTitle.setVisibility(View.INVISIBLE);
            getHomeDatas(false,1);
        }
    
    

    首次加载

    getHomeDatas(false,0);
    

    相关文章

      网友评论

        本文标题:解决addItemDecoration添加分割线重复绘制,间隔变

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