CommonAdapter 一个适用于ListView/GridView/RecyclerView的Adapter库,简化大量重复代码,支持多种布局,可自定义图片加载的实现。
功能特点:
简化大量重复代码
支持多布局
自定义图片加载
常用数据操作
view复用
RecyclerView item 点击和长按事件
dependencies { compile 'com.classic.adapter:commonadapter:1.0' //项目中使用到RecyclerView,需要添加依赖 compile 'com.android.support:recyclerview-v7:23.2.0'}
ListView/GridView 使用示例:
List<News> newsList = ...; //单布局文件 listView = (ListView) findViewById(R.id.listview); listView.setAdapter(new CommonAdapter<News>(context, //item布局文件 R.layout.item_none_picture, newsList ) { @Override public void onUpdate(BaseAdapterHelper helper, News item) { //BaseAdapterHelper详细用法,见下方 helper.setText(R.id.xxx, item.getTitle()) //可实现ImageLoad接口,进行图片自定义加载方式,demo里面使用的Glide .setImageLoad(new GlideImageLoad()) .setImageUrl(R.id.xxx,item.getCoverUrl()); } }); //多布局文件 private final class MultipleLayoutAdapter extends CommonAdapter<News>{ public MultipleLayoutAdapter(Context context, int layoutResId, List<News> data) { super(context, layoutResId, data); } //多种布局重写此方法即可 @Override public int getLayoutResId(News item) { int layoutResId = -1; switch (item.getNewsType()){ case News.TYPE_NONE_PICTURE: //布局样式一 layoutResId = R.layout.item_none_picture; break; case News.TYPE_SINGLE_PICTURE: //布局样式二 layoutResId = R.layout.item_single_picture; break; case News.TYPE_MULTIPLE_PICTURE: //布局样式三 layoutResId = R.layout.item_multiple_picture; break; 更多的布局样式 ... } return layoutResId; } @Override public void onUpdate(BaseAdapterHelper helper, News item) { helper.setImageLoad(new GlideImageLoad()); switch (item.getNewsType()){ case News.TYPE_NONE_PICTURE: //布局样式一 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; case News.TYPE_SINGLE_PICTURE: //布局样式二 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; case News.TYPE_MULTIPLE_PICTURE: //布局样式三 helper.setText(R.id.xxx, item.getTitle()) .setImageUrl(R.id.xxx,item.getCoverUrl()); break; 更多的布局样式 ... } } }