Skip to content

Repository files navigation

特性

  • 封装数据集合添加删除等操作
  • 添加或删除Header和Footer
  • 全局的图片加载器
  • Item 的click和longClick事件
  • 多Item布局支持
  • 滑动到底部加载更多

添加到项目(JitPack.io)

allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}
dependencies {
compile 'com.github.zeng1990java:CommonRecyclerAdapter:0.3.2'
}

使用示例

  • 配置默认的加载更多布局和图片加载器
publicclassAppextendsApplication {
@OverridepublicvoidonCreate() {
super.onCreate();
// 配置默认的加载更多布局和默认的图片加载器AdapterConfig.getInstance()
.setLoadingLayoutId(R.layout.custom_loading)
.setImageLoader(newPicassoImageLoader());
}
}
publicclassPicassoImageLoaderimplementsAdapterImageLoader {
@Overridepublicvoidload(Contextcontext, ImageViewimageView, StringimageUrl) {
Picasso.with(context).load(imageUrl).into(imageView);
}
}
  • 单Item布局使用示例
// 单布局使用mRecyclerView.setAdapter(mCommonRecyclerAdapter = newCommonRecyclerAdapter<String>(this, R.layout.item_view, getDatas()) {
@OverridepublicvoidbindData(ViewHolderholder, Stringdata, intposition) {
holder.viewBinder().setText(R.id.text, data + " position: "+position);
}
});
// 添加HeaderViewBinderheader1Binder = mCommonRecyclerAdapter.addHeaderView(R.layout.header_view);
header1Binder.getView().setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
toast("header click");
}
});
// header 数据绑定header1Binder.setText(R.id.header_text, "Header 1");
//ViewBinderheader2Binder = mCommonRecyclerAdapter.addHeaderView(R.layout.header_view);
header2Binder.getView().setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
// 移除headermCommonRecyclerAdapter.removeHeaderView(v);
}
});
// 添加footerViewBinderfooterBinder = mCommonRecyclerAdapter.addFooterView(R.layout.footer_view);
footerBinder.getView().setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
// 移除footermCommonRecyclerAdapter.removeFooterView(v);
}
});
// 设置item点击事件mCommonRecyclerAdapter.setOnItemClickListener(newCommonRecyclerAdapter.OnItemClickListener() {
@OverridepublicvoidonItemClick(ViewHolderholder, intposition) {
MultiTypeActivity.start(MainActivity.this);
}
});
// 设置item长按事件mCommonRecyclerAdapter.setOnItemLongClickListener(newCommonRecyclerAdapter.OnItemLongClickListener() {
@OverridepublicbooleanonItemLongClick(ViewHolderholder, intposition) {
mCommonRecyclerAdapter.set(position, "Item Long Click "+position);
returntrue;
}
});
// 设置加载更多监听器mCommonRecyclerAdapter.setOnLoadMoreListener(newCommonRecyclerAdapter.OnLoadMoreListener() {
@OverridepublicvoidonLoadMore() {
mHandler.postDelayed(newRunnable() {
@Overridepublicvoidrun() {
mCommonRecyclerAdapter.setIsHasLoadMore(false);
mCommonRecyclerAdapter.addAll(getDatas());
}
}, 5000);
}
});
// 设置加载跟多的布局// mCommonRecyclerAdapter.setLoadMoreLayoutId(R.layout.custom_loading);// 设置有加载更多mCommonRecyclerAdapter.setIsHasLoadMore(true);
  • 多Item布局使用示例
privateclassNewsAdapterextendsCommonRecyclerAdapter<News>{
publicNewsAdapter(@NonNullContextcontext) {
super(context, 0);
}
@OverridepublicintgetItemLayoutResId(Newsdata, intposition) {
intlayoutResId = -1;
switch (data.getNewsType()){
caseNews.TYPE_NONE_PICTURE:
layoutResId = R.layout.item_none_picture;
break;
caseNews.TYPE_SINGLE_PICTURE:
layoutResId = R.layout.item_single_picture;
break;
caseNews.TYPE_MULTIPLE_PICTURE:
layoutResId = R.layout.item_multiple_picture;
break;
}
returnlayoutResId;
}
@OverridepublicvoidbindData(ViewHolderholder, Newsdata, intposition) {
switch (data.getNewsType()){
caseNews.TYPE_NONE_PICTURE:
holder.viewBinder().setText(R.id.item_none_picture_title, data.getTitle())
.setText(R.id.item_none_picture_author,
String.format(Locale.CHINA, Consts.FORMAT_AUTHOR, data.getAuthor()))
.setText(R.id.item_none_picture_date,
Consts.DATE_FORMAT.format(newDate(data.getReleaseTime())))
.setText(R.id.item_none_picture_intro, data.getIntro());
break;
caseNews.TYPE_SINGLE_PICTURE:
holder.viewBinder().setText(R.id.item_single_picture_title, data.getTitle())
.setText(R.id.item_single_picture_author,
String.format(Locale.CHINA, Consts.FORMAT_AUTHOR, data.getAuthor()))
.setText(R.id.item_single_picture_date,
Consts.DATE_FORMAT.format(newDate(data.getReleaseTime())))
.setImageUrl(R.id.item_single_picture_cover,data.getCoverUrl());
break;
caseNews.TYPE_MULTIPLE_PICTURE:
String[] urls = data.getCoverUrl().split(Consts.URL_SEPARATOR);
holder.viewBinder().setText(R.id.item_multiple_picture_intro, data.getIntro())
.setImageUrl(R.id.item_multiple_picture_cover_left,urls[0])
.setImageUrl(R.id.item_multiple_picture_cover_right, urls[1]);
break;
}
}
}

##感谢

About

一个用于RecyclerView Adapter的开发库,包含添加Header,Footer,加载更多和支持多种布局

Resources

Stars

13 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages