Android RecyclerAdapter

GitHub - RecyclerAdapter

RecyclerView Adapter封装类。
封装性、支持Header、支持Footer;
注意Header和Footer占据对应position,HeaderPosition = 0,FooterPosition = last;

FIX

2021.12.27.1
1.RecyclerAdapter addFirst()方法逻辑更新
2.ViewHolder position更新

Maven

1.build.grade

allprojects {
    repositories {
		...
		maven { url 'https://jitpack.io' }
	}
}

2./app/build.grade

dependencies {
	implementation 'com.github.RelinRan:RecyclerAdapter:2021.12.27.1'
}

使用

    private class ItemAdapter extends RecyclerAdapter<String> {

        public ItemAdapter(Context context) {
            super(context);
        }

        @Override
        public int getHeaderLayoutResId() {
            //TODO:头部布局
            return R.layout.androidx_item_header;
        }

        @Override
        protected void onHeaderBindViewHolder(ViewHolder holder, int position) {
            super.onHeaderBindViewHolder(holder, position);
            // TODO:头部布局数据绑定
            holder.addItemClick(R.id.btn_header);
            holder.find(Button.class,R.id.btn_header).setText("Header - "+getItem(position));
        }

        @Override
        public int getFooterLayoutResId() {
            //TODO:脚部布局
            return  R.layout.androidx_item_footer;
        }

        @Override
        protected void onFooterBindViewHolder(ViewHolder holder, int position) {
            super.onFooterBindViewHolder(holder, position);
            //TODO:脚部布局数据绑定
            holder.find(Button.class,R.id.btn_footer).setText("Footer - "+getItem(position));
            holder.addItemClick(R.id.btn_footer);
        }

        @Override
        protected int getItemSwipeMenuLayoutResId() {
            //TODO:侧滑Item布局
            return R.layout.android_menu;
        }

        @Override
        protected void onSwipeBindViewHolder(ViewHolder holder, int position) {
            super.onSwipeBindViewHolder(holder, position);
            //TODO:侧滑Item布局数据绑定
            holder.addItemClick(R.id.btn_item_name);
            holder.addItemClick(R.id.tv_delete);
            holder.addItemClick(R.id.tv_edit);
            holder.find(TextView.class, R.id.btn_item_name).setText(getItem(position));
        }

        @Override
        protected int getItemLayoutResId(int viewType) {
            //TODO:普通item布局
            return R.layout.androidx_items;
        }

        @Override
        protected void onItemBindViewHolder(ViewHolder holder, int position) {
            //TODO:普通item布局数据绑定
        }

    }

RecyclerAdapter方法

1.设置数据源

setItems(List<T> data);

2.设置分页数据

注意:默认开始page=1

setPageItems(int page, List<T> data);

3.添加Items

addItems(List<T> data);

4.添加Item

addItem(T t);

5.通过位置添加item

addItem(int position, T t);

6.首位添加

addFirst(T t);

7.删除Item

removeItem(int position);

8.按范围删除Item

removeItems(int positionStart, int itemCount);

9.移动Item

swapItem(int fromPosition, int toPosition);

10.获取数据

List<T> getItems();

11.获取Item

T getItem(int position);

12.设置空视图

setEmptyView(View emptyView);

13.设置Item点击事件

setOnItemClickListener(OnItemClickListener<T> listener);

14.获取Item点击事件

OnItemClickListener<T> getOnItemClickListener();

15.设置焦点改变事件

setOnItemFocusChangeListener(OnItemFocusChangeListener<T> listener);

ViewHolder方法

1.获取视图类型

int getViewType();

2.获取控件

View v = viewHolder.find(@IdRes int id);
TextView v = viewHolder.find(TextView.class,R.id.tv_name);

3.添加点击事件

addItemClick(@IdRes int id);
addItemClick(View v);

4.添加焦点监听

addItemFocus(@IdRes int id);
addItemFocus(View v);

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>