Android BaseRecyclerViewAdapterHelper使用
2018-03-27 10:31
423 查看
BaseRecyclerViewAdapterHelper项目下载
开启显示时条目动画
adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
设置开启动画的类型,可选类型有
BaseQuickAdapter.ALPHAIN 透明动画
BaseQuickAdapter.SCALEIN 缩放动画
BaseQuickAdapter.SLIDEIN_BOTTOM 底部滑入
BaseQuickAdapter.SLIDEIN_LEFT 左边滑入
BaseQuickAdapter.SLIDEIN_RIGHT 右边滑入
该参数可以自定义adapter.openLoadAnimation(new CustomAnimation());其中CustomAnimation继承在BaseAnimation,代码如下
adapter.isFirstOnly(false);
设置是否仅在第一次加载时显示动画。设置true时,当数据上滑时出现动画,下滑时无动画出现;设置false时,仅在上滑时出现动画.
adapter.setNotDoAnimationCount(3);
设置第一屏显示不做动画的数量
adapter.setOnItemClickListener(listener); adapter.setOnItemLongClickListener(listener);
设置条目点击与长点击
adapter.setOnItemChildClickListener(listener); adapter.setOnItemChildLongClickListener(listener);
设置监听事件,其中根据view的id来区分点击的是哪一个控件
adapter.addHeaderView(headerView);
添加一个头布局
adapter.addFooterView(footerView, 0);
添加一个尾布局
adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {}, mRecyclerView);
加载更多,其中下拉刷新使用 SwipeRefreshLayout
adapter.setOnItemChildClickListener(listener);
设置条目中子控件的点击事件
adapter.setEmptyView(errorView);
设置一个空的布局,可用于网络异常,无数据的情况下
adapter.enableSwipeItem(); adapter.setOnItemSwipeListener(onItemSwipeListener); adapter.enableDragItem(mItemTouchHelper); adapter.setOnItemDragListener(listener);
设置允许左滑右滑动条目
数据源
实体类
1 . 使用
// 基类 具体实现类 布局 数据源 BaseQuickAdapter homeAdapter = new HomeAdapter(R.layout.home_item_view, mDataList); homeAdapter.openLoadAnimation(); // 开启动画 // 加载头布局 View top = getLayoutInflater().inflate(R.layout.top_view, (ViewGroup) mRecyclerView.getParent(), false); // 添加头布局 homeAdapter.addHeaderView(top); // 设置点击事件 homeAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() { @Override public void onItemClick(BaseQuickAdapter adapter, View view, int position) { Log.e("adapter", "点击"); } }); // 设置适配器 mRecyclerView.setAdapter(homeAdapter);
// 继承自BaseQuickAdapter的适配器 实体类 public class HomeAdapter extends BaseQuickAdapter<HomeItem, BaseViewHolder> { public HomeAdapter(int layoutResId, List data) { super(layoutResId, data); } @Override protected void convert(BaseViewHolder helper, HomeItem item) { // 设置文本 helper.setText(R.id.text, item.getTitle()); // 设置图片 helper.setImageResource(R.id.icon, item.getImageResource()); } }
2. api介绍
adapter.openLoadAnimation();开启显示时条目动画
adapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
设置开启动画的类型,可选类型有
BaseQuickAdapter.ALPHAIN 透明动画
BaseQuickAdapter.SCALEIN 缩放动画
BaseQuickAdapter.SLIDEIN_BOTTOM 底部滑入
BaseQuickAdapter.SLIDEIN_LEFT 左边滑入
BaseQuickAdapter.SLIDEIN_RIGHT 右边滑入
该参数可以自定义adapter.openLoadAnimation(new CustomAnimation());其中CustomAnimation继承在BaseAnimation,代码如下
public class CustomAnimation implements BaseAnimation { @Override public Animator[] getAnimators(View view) { return new Animator[]{ ObjectAnimator.ofFloat(view, "scaleY", 1, 1.1f, 1), ObjectAnimator.ofFloat(view, "scaleX", 1, 1.1f, 1) }; } }
adapter.isFirstOnly(false);
设置是否仅在第一次加载时显示动画。设置true时,当数据上滑时出现动画,下滑时无动画出现;设置false时,仅在上滑时出现动画.
adapter.setNotDoAnimationCount(3);
设置第一屏显示不做动画的数量
adapter.setOnItemClickListener(listener); adapter.setOnItemLongClickListener(listener);
设置条目点击与长点击
adapter.setOnItemChildClickListener(listener); adapter.setOnItemChildLongClickListener(listener);
设置监听事件,其中根据view的id来区分点击的是哪一个控件
adapter.setOnItemChildClickListener(new BaseQuickAdapter.OnItemChildClickListener() { @Override public void onItemChildClick(BaseQuickAdapter adapter, View view, int position) { switch (view.getId()) { case R.id.img: Log.e("adapter","img"); break; case R.id.tweetName: Log.e("adapter","tweetName"); break; break; default: break; } } });
adapter.addHeaderView(headerView);
添加一个头布局
adapter.addFooterView(footerView, 0);
添加一个尾布局
adapter.setOnLoadMoreListener(new BaseQuickAdapter.RequestLoadMoreListener() {}, mRecyclerView);
加载更多,其中下拉刷新使用 SwipeRefreshLayout
adapter.setOnItemChildClickListener(listener);
设置条目中子控件的点击事件
adapter.setEmptyView(errorView);
设置一个空的布局,可用于网络异常,无数据的情况下
adapter.enableSwipeItem(); adapter.setOnItemSwipeListener(onItemSwipeListener); adapter.enableDragItem(mItemTouchHelper); adapter.setOnItemDragListener(listener);
设置允许左滑右滑动条目
private ItemTouchHelper mItemTouchHelper; private ItemDragAndSwipeCallback mItemDragAndSwipeCallback; mItemDragAndSwipeCallback = new ItemDragAndSwipeCallback(mAdapter); mItemTouchHelper = new 4000 ItemTouchHelper(mItemDragAndSwipeCallback); mItemTouchHelper.attachToRecyclerView(mRecyclerView); // 设置滑动方向,拖拽方向 //mItemDragAndSwipeCallback.setDragMoveFlags(ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT | ItemTouchHelper.UP | ItemTouchHelper.DOWN); mItemDragAndSwipeCallback.setSwipeMoveFlags(ItemTouchHelper.START | ItemTouchHelper.END); mAdapter.enableSwipeItem(); mAdapter.setOnItemSwipeListener(onItemSwipeListener); mAdapter.enableDragItem(mItemTouchHelper); mAdapter.setOnItemDragListener(listener);
3. 多条目适配器
public class MultipleItemQuickAdapter extends BaseMultiItemQuickAdapter<MultipleItem, BaseViewHolder> { public MultipleItemQuickAdapter(Context context, List data) { super(data); addItemType(MultipleItem.TEXT, R.layout.item_text_view); addItemType(MultipleItem.IMG, R.layout.item_image_view); addItemType(MultipleItem.IMG_TEXT, R.layout.item_img_text_view); } @Override protected void convert(BaseViewHolder helper, MultipleItem item) { switch (helper.getItemViewType()) { case MultipleItem.TEXT: helper.setText(R.id.tv, item.getContent()); break; case MultipleItem.IMG_TEXT: switch (helper.getLayoutPosition() % 2) { case 0: helper.setImageResource(R.id.iv, R.mipmap.animation_img1); break; case 1: helper.setImageResource(R.id.iv, R.mipmap.animation_img2); break; default: break; } default: break; } } }
数据源
// 实现MultiItemEntity接口 public class MultipleItem implements MultiItemEntity { public static final int TEXT = 1; public static final int IMG = 2; public static final int IMG_TEXT = 3; private int itemType; public MultipleItem(int itemType) { this.itemType = itemType; } @Override public int getItemType() { return itemType; } }
4. 分组条目适配器
// 继承自BaseSectionQuickAdapter public class SectionAdapter extends BaseSectionQuickAdapter<MySection, BaseViewHolder> { /** * 构造方法 * @param sectionHeadResId 头布局 * @param layoutResId 条目布局 * @param data 数据 */ public SectionAdapter(int layoutResId, int sectionHeadResId, List data) { super(layoutResId, sectionHeadResId, data); } @Override protected void convertHead(BaseViewHolder helper, final MySection item) { helper.setText(R.id.header, item.header); helper.setVisible(R.id.more, item.isMore()); helper.addOnClickListener(R.id.more); } @Override protected void convert(BaseViewHolder helper, MySection item) { Video video = (Video) item.t; switch (helper.getLayoutPosition() % 2) { case 0: helper.setImageResource(R.id.iv, R.mipmap.m_img1); break; case 1: helper.setImageResource(R.id.iv, R.mipmap.m_img2); break; default: break; } helper.setText(R.id.tv, video.getName()); } }
实体类
// 继承SectionEntity public class MySection extends SectionEntity<Video> { public MySection(boolean isHeader, String header) { super(isHeader, header); } public MySection(Video t) { super(t); } }
相关文章推荐
- Android开发之ButterKnife,GreenDao简单运用,以及推荐并使用一个好用的开源库BaseRecyclerViewAdapterHelper。
- Android 开源框架BaseRecyclerViewAdapterHelper使用——RecyclerView万能适配器
- BaseRecyclerViewAdapterHelper的使用
- BaseRecyclerViewAdapterHelper 使用注意
- BaseRecyclerViewAdapterHelper的使用
- 强大的BaseRecyclerViewAdapterHelper使用
- BaseRecyclerViewAdapterHelper使用
- Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
- BaseRecyclerViewAdapterHelper的使用方法介绍
- BaseRecyclerViewAdapterHelper的使用
- Android第三方库——强大BaseRecyclerViewAdapterHelper
- 简单介绍使用BaseRecyclerViewAdapterHelper
- Android开源之BaseRecyclerViewAdapterHelper(持续更新!)
- BaseRecyclerViewAdapterHelper简单使用
- UI框架之BaseRecyclerViewAdapterHelper使用
- 强大的BaseRecyclerViewAdapterHelper使用
- BaseRecyclerViewAdapterHelper使用总结
- RecyclerView+BaseRecyclerViewAdapterHelper的基本使用
- 关于MVP设计模式 和 BaseRecyclerViewAdapterHelperV2.4.4 Android
- BaseRecyclerViewAdapterHelper的使用姿势问题