DecorAdapter
RecyclerView.Adapter的功能封装
依赖
implementation 'com.aliya:decoradapter:0.7.6'
核心功能:
- addHeader
- addFooter
- setHeaderRefresh
- setFooterLoadMore
- setEmpty
- setOnItemClickListener
- setOnItemLongClickListener
- removePageItem
其他功能:
- RecyclerViewHolder - ViewHolder
- OverlayViewHolder - 悬浮吸顶 ViewHolder
- ListItemDecoration - List类型分割线
- GridItemDecoration - Grid类型分割线
- RefreshPage - 下拉刷新
Api声明:
/**
* 添加 header PageItem
*
* @param page page item
*/
public final PageItem addHeader(PageItem page);
/**
* 添加 footer PageItem
*
* @param page page item
*/
public final PageItem addFooter(PageItem page);
/**
* 专门为下拉刷新提供的方法, 保证下拉刷新header永远在第一个
*
* @param page page item
*/
public final PageItem setHeaderRefresh(PageItem page);
/**
* 专门为加载更多提供的方法,保证加载更多footer永远在最后一个
*
* @param page page item
*/
public final PageItem setFooterLoadMore(PageItem page);
/**
* Sets the view to show if the adapter item count is empty
*
* @param page page item
*/
public final void setEmpty(PageItem page);
/**
* Removes a previously-added page item.
*
* @param page The page item to remove
* @return removed page item position at adapter, -1 means it doesn't exist
*/
public final int removePageItem(PageItem page);
public final void setOnItemClickListener(OnItemClickListener listener);
public final void setOnItemLongClickListener(OnItemLongClickListener listener)
RecyclerViewHolder的用法
class ViewHolder extends RecyclerViewHolder<Entity> implements ItemClickCallback{
TextView mTextView;
public ViewHolder(@NonNull ViewGroup parent) {
super(parent, R.layout.item_main_sample);
mTextView = itemView.findViewById(R.id.tv_item);
}
@Override
public void bindData(Entity data) {
mTextView.setText(data.getContent());
}
@Override
public void onItemClick(View itemView, int position) {
// 条目点击
}
}
RecyclerAdapter的用法
class Adapter extends RecyclerAdapter<Entity> {
public Adapter(List<Entity> data) {
super(data);
}
@Override
public RecyclerViewHolder onAbsCreateViewHolder(ViewGroup parent, int viewType) {
return new ViewHolder(parent);
}
}
下拉刷新的实现
参见:
- 实现一 RefreshHeader
- 实现二 Refresh2Header
分割线的用法
recycleView.addItemDecoration(
new ListBuilder(getApplicationContext())
.setSpace(1) // 分割线间距
.setColorRes(R.color.colorDivider) // 分割线颜色
.setIgnoreLastItem(true) // 是否忽略最后一条
.setMargin(5) // 两边间距
.build()
);