• Stars
    star
    4,717
  • Rank 8,572 (Top 0.2 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created almost 9 years ago
  • Updated over 2 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Android 万能的Adapter for ListView,RecyclerView,GridView等,支持多种Item类型的情况。

base-adapter

Android 万能的Adapter for ListView,RecyclerView,GridView等,支持多种Item类型的情况。

引入

ForRecyclerView

compile 'com.zhy:base-rvadapter:3.0.3'

ForListView

compile 'com.zhy:base-adapter:3.0.3'

使用

##(1)简单的数据绑定(ListView与其使用方式一致)

首先看我们最常用的单种Item的书写方式:

mRecyclerView.setAdapter(new CommonAdapter<String>(this, R.layout.item_list, mDatas)
{
    @Override
    public void convert(ViewHolder holder, String s)
    {
        holder.setText(R.id.id_item_list_title, s);
    }
});

是不是相当方便,在convert方法中完成数据、事件绑定即可。

只需要简单的将Adapter继承CommonAdapter,复写convert方法即可。省去了自己编写ViewHolder等大量的重复的代码。

  • 可以通过holder.getView(id)拿到任何控件。
  • ViewHolder中封装了大量的常用的方法,比如holder.setText(id,text),holder.setOnClickListener(id,listener)等,可以支持使用。

效果图:

##(2)多种ItemViewType(ListView与其使用方式一致)

对于多中itemviewtype的处理参考:https://github.com/sockeqwe/AdapterDelegates ,具有极高的扩展性。

MultiItemTypeAdapter adapter = new MultiItemTypeAdapter(this,mDatas);
adapter.addItemViewDelegate(new MsgSendItemDelagate());
adapter.addItemViewDelegate(new MsgComingItemDelagate());

每种Item类型对应一个ItemViewDelegete,例如:

public class MsgComingItemDelagate implements ItemViewDelegate<ChatMessage>
{

    @Override
    public int getItemViewLayoutId()
    {
        return R.layout.main_chat_from_msg;
    }

    @Override
    public boolean isForViewType(ChatMessage item, int position)
    {
        return item.isComMeg();
    }

    @Override
    public void convert(ViewHolder holder, ChatMessage chatMessage, int position)
    {
        holder.setText(R.id.chat_from_content, chatMessage.getContent());
        holder.setText(R.id.chat_from_name, chatMessage.getName());
        holder.setImageResource(R.id.chat_from_icon, chatMessage.getIcon());
    }
}

贴个效果图:

##(3) 添加HeaderView、FooterView

mHeaderAndFooterWrapper = new HeaderAndFooterWrapper(mAdapter);

TextView t1 = new TextView(this);
t1.setText("Header 1");
TextView t2 = new TextView(this);
t2.setText("Header 2");
mHeaderAndFooterWrapper.addHeaderView(t1);
mHeaderAndFooterWrapper.addHeaderView(t2);

mRecyclerView.setAdapter(mHeaderAndFooterWrapper);
mHeaderAndFooterWrapper.notifyDataSetChanged();

类似装饰者模式,直接将原本的adapter传入,初始化一个HeaderAndFooterWrapper对象,然后调用相关API添加。

##(4) 添加LoadMore

mLoadMoreWrapper = new LoadMoreWrapper(mOriginAdapter);
mLoadMoreWrapper.setLoadMoreView(R.layout.default_loading);
mLoadMoreWrapper.setOnLoadMoreListener(new LoadMoreWrapper.OnLoadMoreListener()
{
    @Override
    public void onLoadMoreRequested()
    {
    }
});

mRecyclerView.setAdapter(mLoadMoreWrapper);

直接将原本的adapter传入,初始化一个LoadMoreWrapper对象,然后调用相关API即可。

##(5)添加EmptyView

mEmptyWrapper = new EmptyWrapper(mAdapter);
mEmptyWrapper.setEmptyView(R.layout.empty_view);

mRecyclerView.setAdapter(mEmptyWrapper );

直接将原本的adapter传入,初始化一个EmptyWrapper对象,然后调用相关API即可。

支持链式添加多种功能,示例代码:

mAdapter = new EmptyViewWrapper(
	new LoadMoreWrapper(
	new HeaderAndFooterWrapper(mOriginAdapter)));

一些回调

onViewHolderCreated

mListView.setAdapter(new CommonAdapter<String>(this, R.layout.item_list, mDatas)
{
    @Override
    public void convert(ViewHolder holder, String o, int pos)
    {
        holder.setText(R.id.id_item_list_title, o);
    }

    @Override
    public void onViewHolderCreated(ViewHolder holder, View itemView)
    {
        super.onViewHolderCreated(holder, itemView);
       //AutoUtil.autoSize(itemView)
    }
});

感谢

More Repositories

1

okhttputils

[停止维护]okhttp的辅助类
Java
6,884
star
2

AndroidAutoLayout

[停止维护]Android屏幕适配方案,直接填写设计图上的像素尺寸即可完成适配,最大限度解决适配问题。
Java
6,685
star
3

FlowLayout

[不再维护]Android流式布局,支持单选、多选等,适合用于产品标签等。
Java
5,583
star
4

Highlight

一个用于app指向性功能高亮的库
Java
3,143
star
5

android-percent-support-extend

a extends lib for android-percent-support(Google百分比布局库的扩展)
Java
1,815
star
6

AndroidChangeSkin

一种完全无侵入的换肤方式,支持插件式和应用内,无需重启Activity.
Java
1,719
star
7

Android_Blog_Demos

source code in blog~
Java
1,581
star
8

Android-StickyNavLayout

An android library for navigator that stick on the top
Java
1,430
star
9

Android-CircleMenu

自定义ViewGroup实现的圆形旋转菜单,支持跟随手指旋转以及快速旋转。
Java
1,177
star
10

ChangeSkin

基于插件式的Android换肤框架,支持app内和或者外部插件式提供资源的换肤方案,无需重启Activity。[仅供参考原理,暂不维护]
Java
1,151
star
11

MPermissions

a easy API to use runtime permission for Android M
Java
975
star
12

MagicViewPager

单页显示3个Item的ViewPager炫酷切换效果,适用于Banner等。
Java
864
star
13

MixtureTextView

支持Android图文混排、文字环绕图片等效果
Java
816
star
14

hongyangWeixinArticles

主要用于记录微信公众号所推送的所有文章,公众号:hongyangAndroid
786
star
15

LoadingAndRetryManager

无缝为Activity、Fragment、任何View设置加载(loading)、重试(retry)和无数据(empty)页面。
Java
652
star
16

wanandroid

玩Android网站 -- 努力做一个优质的Android站点
JavaScript
580
star
17

FitAndroid7

一行代码完成Android 7 FileProvider适配~
Java
556
star
18

Android-ProgressBarWidthNumber

继承ProgressBar实现的两种风格的滚动条,非常容易理解。
Java
525
star
19

ColorfulStatusBar

Android app状态栏变色。
Java
474
star
20

ColorTrackView

字体或者图片可以逐渐染色和逐渐褪色的动画效果
Java
447
star
21

base-diskcache

Android 缓存库,融合了DiskLruCache和ASimpleCache.
277
star
22

Android-ViewPagerIndicator

一款仿MIUI的ViewPagerIndicator,支持Tab数量随意定义。
Java
257
star
23

demo_rvadimage

Java
133
star
24

ColorImageView

Android 图片不规则封闭区域填充 ~~~
Java
127
star
25

BsDiff_And_Patch

just demo;
Makefile
102
star
26

ScrollNumberView

支持数字的上下自动滚动切换
Java
99
star
27

FABridge

a easy way for communication between activity and fragment in Android.
Java
88
star
28

quickappDemo

快应用Demo
JavaScript
78
star
29

Android-HyViewInject

一个Android的ViewInject的注入库,基于编译时注解解析,不会影响性能。
Java
68
star
30

demo_ShowPhoneMp4

Just Blog Demo.
Java
66
star
31

base-imageloader

Android本地、网络图片加载库。
Java
53
star
32

ViewOptDemo

仅为博客demo,切勿使用。
Java
45
star
33

FlexboxLayout-Tag

基于FlexboxLayout的一个Tag容器测试demo
Java
44
star
34

ColorTrackImageView

图片可以逐渐染色和逐渐褪色的动画效果
Java
28
star
35

basetools

base lib for android
Java
27
star
36

mooc_hyman

提供慕课网视频教程素材地址
Java
24
star
37

SpCache

A cache lib for SharedPreferences
Java
20
star
38

MetroLayout

Java
10
star
39

hongyangAndroid.github.io

HTML
4
star
40

ItTrainingInstitutions

这是一份中国IT培训机构名单,作为求职者在招聘网站上辨别是否为培训机构的依据
3
star
41

hongyangAndroid

1
star