这才是你想要的RecyclerView的扩展库

标签: Android RecyclerViewAdapter RecyclerViewItemDecoration ExpandRecyclerView
174人阅读 评论(0) 收藏 举报
分类:

RecyclerView自从2015年推出以来,至今在开源中出现了各种各样的开源库,五花八门,但是,在使用的过程中是否真的适合你呢?这个我就不太清楚,然而,我感觉我还没有找到使用更方便的库,因此,我创建了这个库ExpandRecyclerView

在2015年我创建了一个RecyclerView分割线库叫RecyclerViewDecoration,1.x版本虽然具备很多属性,但是用起来不是很方便。直到2017年,我才改成Builder的方式2.x版,也优化了算法,同时也有一些小伙伴给我提了一些新的需求。到现在为止,也还有一些新的需求,这些问题,我后面都会陆续更新。

包括现在要介绍的ExpandRecyclerView,从1.3版本开始将RecyclerViewDecoration的内容也合并这里。陆续会有更多分割线和adapter结合的API出现。这个库的出现,目的很简单,就是要在使用的过程中,尽量减少使用者的代码量。不清楚怎么使用,可以参考sample中的例子,下面只是简单的介绍。

ExpandRecyclerView目前主要包含几个部分:

Adapter

1.RecyclerViewAdapter

这个adapter可以支持单种item和多种item。

例:(单种item)

RecyclerViewAdapter adapter = new RecyclerViewAdapter<>(this, Arrays.asList(titles)
    , R.layout.item_main_list
    , new RecyclerViewSingleTypeProcessor<String>() {
        @Override
        public void onBindViewHolder(RecyclerViewViewHolder holder, final int position, String str) {
            TextView textView = holder.getView(R.id.tv_content);
            textView.setText(str);
        }
    });

例:(多种item)

mAdapter = new RecyclerViewAdapter<>(this, mDataList
    , new int[]{R.layout.item_list_type0, R.layout.item_list_type1}
    , new RecyclerViewMultipleTypeProcessor<Car>() {

        @Override
        public void onBindViewHolder(RecyclerViewViewHolder holder, int position, Car object) {
            if(getItemViewType(position) == 0) {
                TextView textView = holder.getView(R.id.tv_content);
                textView.setText(object.getBrand() + "/" + object.getTypeName());
            }else{
            }
        }

        @Override
        public int getItemViewType(int position) {
            //define two viewTypes
            if (position % 2 == 0)
                return 1;
            return 0;
        }
    });

2.RecyclerViewGroupAdapter

特别要注意的是这个Adapter的第一个item一定是一个group type。

例:

mGroupAdapter = new RecyclerViewGroupAdapter<>(this, mDataList
                , new int[]{R.layout.item_group_type, R.layout.item_list_type1}
                , new RecyclerViewGroupTypeProcessor<Car>() {


            @Override
            public void onBindGroupViewHolder(RecyclerViewViewHolder holder, int groupPosition, Car car) {
                TextView tvGroup = holder.getView(R.id.tv_group);
                tvGroup.setText(car.getGroup());
            }


            @Override
            public void onBindItemViewHolder(RecyclerViewViewHolder holder, final int groupPosition, final int itemPosition, Car car) {
                TextView tvContent = holder.getView(R.id.tv_content);
                tvContent.setText("Car brand:" + car.getBrand() + " / type: " + car.getTypeName());


                tvContent.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        Toast.makeText(GroupListActivity.this
                                , "Group: " + groupPosition + "\titemPosition: " + itemPosition, Toast.LENGTH_SHORT).show();
                    }
                });
            }


            @Override
            public int getItemViewType(int position) {
                if (mDataList.get(position).getGroup() != null)
                    return 0;
                return 1;
            }
        });

ItemDecoration

之前介绍的https://blog.csdn.net/arjinmc/article/details/74508483

还有新的RecyclerViewGroupItemDecoration分组分割线。可以在sample中GroupGridActivity中可以看到它的一种使用方式。


Style

转换一些通用的RecyclerView布局方式。


更多API的详细介绍,请查看wiki

如果你发现了bug,或者你有什么新的想法,需求欢迎email给我。arjinmc@hotmail.com

查看评论

崔健2

歌曲:假行僧歌手:崔健 专辑:新长征路上的摇滚 LRC歌词 HOT• 搜索 "假行僧"mp3 • 下载"假行僧"铃声打印预览 我要从南走到北,我还要从白走到黑.我要人们都看到我,却不知我是谁.假如你看...
  • aspczlover
  • aspczlover
  • 2007年05月29日 19:58
  • 1503

37 《这才是心理学》 -豆瓣评分9.0

《这才是心理学》 【 可证伪性是科学心理学的重要标准,伪心理学的惯用伎俩之一就是不可证伪。】         如今各种伪心理学的论调充斥了我们的生活,而这一切源于我们对科学心理学的误解。本期音频,...
  • czg13548930186
  • czg13548930186
  • 2017年07月05日 19:56
  • 728

20多岁,你迷茫又着急。你想要房子你想要汽车,你想要旅行你想要享受生活。 你那么年轻却窥觑整个世界

20多岁,你迷茫又着急。你想要房子你想要汽车,你想要旅行你想要享受生活。你那么年轻却窥觑整个世界,你那么浮躁却想要看透生活。 一、别急,千万别急  上周在南京出差,深夜拖着疲惫去跟朋友见面,畅谈至...
  • wqc02
  • wqc02
  • 2013年04月19日 12:01
  • 1622

有你的日子才有欣喜

为什么总要去写惹人心痛的东西拼命躲避温暖躲避阳光把幸福决然隐藏逃到一个陌生的地方独自哀伤的歌唱与你相爱 却就这样忍心的把你忽略不曾理解你的苦不曾考虑你的无助不再留恋 过去的错误在暗夜中痛哭哭你的酸楚 ...
  • flyback
  • flyback
  • 2006年04月26日 11:33
  • 705

假如你想要一样东西就放他走,若他回来便是属于你的

You are the reason why I became stronger.But still,you are my weakness——因为你,我懂得了成长,可你,依旧是我的伤。  想要忘记一...
  • simonjay2007
  • simonjay2007
  • 2012年10月18日 22:58
  • 2787

SSCANF这才是我想要的。。

sscanf   名称:   sscanf() - 从一个字符串中读进与指定格式相符的数据.   函数原型:   Int sscanf( string str, string fmt, mix...
  • shagua_nan
  • shagua_nan
  • 2016年03月15日 13:03
  • 113

日记090809

现在23:42还有十八分钟就到十号了感觉进入八月后日子过的好快上午做总习题十,结果效率极低,还被一道题搞郁闷了下午和晚上看无穷级数,看了四节,晚上九点开始看了会单词回寝室前陪人逛了一圈 今天看见某人的...
  • dragonsky1
  • dragonsky1
  • 2009年08月09日 23:43
  • 214

这世界不知道什么才是真的,什么是可以相信的

即将过去的2007年是可悲的一年,悲的是:这世界不知道什么才是真的,什么是可以相信的。在中国,食品药品作假,矿难死亡人数作假,学者论文作假,教授学历作假,离婚结婚作假,新闻发言人的发言作假……有趣的是...
  • peixinedu
  • peixinedu
  • 2007年12月26日 20:07
  • 689

这才是未来的系统桌面,你那个只能叫电脑桌!

触摸屏ideum公司日前研制出一款触摸屏,可以直接把它当电脑的桌面来看待,你无需再有额外的电脑,只需要这样两块屏幕,你的所有操作就像科幻大片中的场景一样,所见即所得! The Dynamic ...
  • WJshanggan
  • WJshanggan
  • 2015年05月20日 14:27
  • 925

励志小故事

  一个失意人,能在一群得意人间谈笑风生,面无惭色,才是有骨气;一个得意人,能在一群失意的朋友间,让人想不到他的得意,才是会做人。                                   ...
  • bloghan
  • bloghan
  • 2007年07月20日 15:25
  • 1154
    个人资料
    持之以恒
    等级:
    访问量: 10万+
    积分: 1867
    排名: 2万+
    我的新浪博客
    最新评论