BaseRecyclerViewAdapterHelper(中文版文档)
Powerful and flexible RecyclerAdapter
Please feel free to use this.(Love can be a Star)

- Reduce lot of code.easily create RecyclerAdapter
- add item click and add item long click and item chlid click
- easily add RecyclerAdapter animations
- add HeadView and add FooterView
- add The drop-down refresh, load more
- set custom loading view
- easily create section headers
- custom item view type
- add setEmptyView methods
- add drag item
Add it in your root build.gradle at the end of repositories:
allprojects {
repositories {
...
maven { url "https://jitpack.io" }
}
}Add the dependency
dependencies {
compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:v1.8.8'
}#Use it create RecyclerAdapter

publicclassQuickAdapterextendsBaseQuickAdapter<Status> {
publicQuickAdapter() {
super(R.layout.tweet, DataServer.getSampleData());
}
@Overrideprotectedvoidconvert(BaseViewHolderhelper, Statusitem) {
helper.setText(R.id.tweetName, item.getUserName())
.setText(R.id.tweetText, item.getText())
.setText(R.id.tweetDate, item.getCreatedAt())
.setVisible(R.id.tweetRT, item.isRetweet())
.linkify(R.id.tweetText);
Glide.with(mContext).load(item.getUserAvatar()).crossFade().into((ImageView) helper.getView(R.id.iv));
}
}#Use it item click and item chlid click

mQuickAdapter.setOnRecyclerViewItemClickListener(newBaseQuickAdapter.OnRecyclerViewItemClickListener() {
@OverridepublicvoidonItemClick(Viewview, intposition) {
//..
}
});#Use it item chlid click Adapter
protectedvoidconvert(BaseViewHolderhelper, Statusitem) {
helper.setOnClickListener(R.id.tweetAvatar, newOnItemChildClickListener())
.setOnClickListener(R.id.tweetName, newOnItemChildClickListener());
}Activity
mQuickAdapter.setOnRecyclerViewItemChildClickListener(newBaseQuickAdapter.OnRecyclerViewItemChildClickListener() {
@OverridepublicvoidonItemChildClick(BaseQuickAdapteradapter, Viewview, intposition) {
Stringcontent = null;
Statusstatus = (Status) adapter.getItem(position);
switch (view.getId()) {
caseR.id.tweetAvatar:
content = "img:" + status.getUserAvatar();
break;
caseR.id.tweetName:
content = "name:" + status.getUserName();
break;
}
Toast.makeText(AnimationUseActivity.this, content, Toast.LENGTH_LONG).show();
}
});// Turn animationquickAdapter.openLoadAnimation();or
// Turn animation and set animatequickAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);or
// Turn animation and set custom animatequickAdapter.openLoadAnimation(newBaseAnimation() {
@OverridepublicAnimator[] getAnimators(Viewview) {
returnnewAnimator[]{
ObjectAnimator.ofFloat(view, "scaleY", 1, 1.1f, 1),
ObjectAnimator.ofFloat(view, "scaleX", 1, 1.1f, 1)
};
}
});publicclassMultipleItemQuickAdapterextendsBaseMultiItemQuickAdapter<MultipleItem> {
publicMultipleItemQuickAdapter(Listdata) {
super(data);
addItemType(MultipleItem.TEXT, R.layout.text_view);
addItemType(MultipleItem.IMG, R.layout.image_view);
}
@Overrideprotectedvoidconvert(BaseViewHolderhelper, MultipleItemitem) {
switch (helper.getItemViewType()) {
caseMultipleItem.TEXT:
helper.setImageUrl(R.id.tv, item.getContent());
break;
caseMultipleItem.IMG:
helper.setImageUrl(R.id.iv, item.getContent());
break;
}
}
}mQuickAdapter.addHeaderView(getView());
mQuickAdapter.addFooterView(getView());#Use it load more
setOnLoadMoreListener
mQuickAdapter.openLoadMore(PAGE_SIZE, true);
mQuickAdapter.setOnLoadMoreListener(this);Override onLoadMoreRequested()
@OverridepublicvoidonLoadMoreRequested() {
mRecyclerView.post(newRunnable() {
@Overridepublicvoidrun() {
if (mCurrentCounter >= TOTAL_COUNTER) {
mQuickAdapter.notifyDataChangedAfterLoadMore(false);
}
} else {
mQuickAdapter.notifyDataChangedAfterLoadMore(DataServer.getSampleData(PAGE_SIZE),true);
mCurrentCounter = mQuickAdapter.getItemCount();
}});
}#Set custom loading view
mQuickAdapter.setLoadingView(customView);#Use it create section headers

publicclassSectionAdapterextendsBaseSectionQuickAdapter<MySection> {
publicSectionAdapter(intlayoutResId, intsectionHeadResId, Listdata) {
super(layoutResId, sectionHeadResId, data);
}
@Overrideprotectedvoidconvert(BaseViewHolderhelper, MySectionitem) {
helper.setImageUrl(R.id.iv, (String) item.t);
}
@OverrideprotectedvoidconvertHead(BaseViewHolderhelper,finalMySectionitem) {
helper.setText(R.id.header, item.header);
elsehelper.setOnClickListener(R.id.more, newView.OnClickListener() {
@OverridepublicvoidonClick(Viewv) {
Toast.makeText(context,item.header+"more..",Toast.LENGTH_LONG).show();
}
});
}mQuickAdapter.setEmptyView(getView());OnItemDragListeneronItemDragListener = newOnItemDragListener() {
@OverridepublicvoidonItemDragStart(RecyclerView.ViewHolderviewHolder, intpos){}
@OverridepublicvoidonItemDragMoving(RecyclerView.ViewHoldersource, intfrom, RecyclerView.ViewHoldertarget, intto) {}
@OverridepublicvoidonItemDragEnd(RecyclerView.ViewHolderviewHolder, intpos) {}
}
OnItemSwipeListeneronItemSwipeListener = newOnItemSwipeListener() {
@OverridepublicvoidonItemSwipeStart(RecyclerView.ViewHolderviewHolder, intpos) {}
@OverridepublicvoidclearView(RecyclerView.ViewHolderviewHolder, intpos) {}
@OverridepublicvoidonItemSwiped(RecyclerView.ViewHolderviewHolder, intpos) {}
};
ItemDragAndSwipeCallbackitemDragAndSwipeCallback = newItemDragAndSwipeCallback(mAdapter);
ItemTouchHelperitemTouchHelper = newItemTouchHelper(itemDragAndSwipeCallback);
itemTouchHelper.attachToRecyclerView(mRecyclerView);
// enable drag itemsmAdapter.enableDragItem(itemTouchHelper, R.id.textView, true);
mAdapter.setOnItemDragListener(onItemDragListener);
// enable swipe itemsmAdapter.enableSwipeItem();
mAdapter.setOnItemSwipeListener(onItemSwipeListener);#Thanks JoanZapata / base-adapter-helper
#License
Copyright 2016 陈宇明
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.





