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);