項(xiàng)目引入依賴
1、在bulid.gradle(Project:xxx)的文件中添加
allprojects {
repositories {
//jcenter鏡像
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url "https://jitpack.io" }
}
}
2、在bulid.gradle(Module:xxx)的文件添加
dependencies {
implementation 'com.github.CymChad:BaseRecyclerViewAdapterHelper:3.0.4'
// 下拉刷新
implementation 'com.scwang.smartrefresh:SmartRefreshLayout:1.1.0'
implementation 'com.scwang.smartrefresh:SmartRefreshHeader:1.1.0'
}
使用案例
3.1 設(shè)置布局文件
<com.scwang.smartrefresh.layout.SmartRefreshLayout
android:id="@+id/smart"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:srlEnableHeaderTranslationContent="false">
<com.scwang.smartrefresh.header.MaterialHeader
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recy_kongjian"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" />
<com.scwang.smartrefresh.layout.footer.ClassicsFooter
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</com.scwang.smartrefresh.layout.SmartRefreshLayout>
3.2 自定義適配器,繼承BaseQuickAdapter
class TiXingAdapter : BaseQuickAdapter<QtypeVo, BaseViewHolder>(R.layout.item_tixing),LoadMoreModule {
override fun convert(holder: BaseViewHolder, item: QtypeVo) {
val tvName = holder.getView<TextView>(R.id.tv_content)
if (item.isSelected) {
tvName.background = MyApp.instance.resources.getDrawable(R.drawable.shape_tv_ckbg_bg)
tvName.setTextColor(ZJColor.white)
} else {
tvName.background = MyApp.instance.resources.getDrawable(R.drawable.shape_btn_bg_gray)
tvName.setTextColor(ZJColor.black_33)
}
tvName.text = item.qtypename
}
}
3.3 調(diào)用,如果xml中沒有設(shè)置layoutManager,那可以聲明的時(shí)候設(shè)置
tiXingAdapter = TiXingAdapter ()
tiXingAdapter?.data = kemuDatas
recy_kemu.layoutManager = GridLayoutManager(this, 3)
recy_kemu.adapter = tiXingAdapter
切記一定要設(shè)置布局管理器否則數(shù)據(jù)出不來
適配器點(diǎn)擊事件
4.1 item點(diǎn)擊事件
tiXingAdapter?.setOnItemClickListener { adapter, view, position ->
//item點(diǎn)擊事件
}
4.2 item長按事件
tiXingAdapter?.setOnItemLongClickListener(new BaseQuickAdapter.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(BaseQuickAdapter adapter, View view, int position) {
return false;
}
});
4.3 item 子控件點(diǎn)擊事件
一般用于RecyclerView嵌套R(shí)ecyclerView或者滑動(dòng)刪除等其他的操作
tiXingAdapter?.addChildClickViewIds(R.id.wvItem, R.id.fCon)
tiXingAdapter?.setOnItemChildClickListener() { adapter, view, position ->
//點(diǎn)擊事件
}
4.4 數(shù)據(jù)為空的顯示的ui
tiXingAdapter?.setEmptyView(R.layout.empty_bg)
下拉刷洗上拉加載更多
smart.setOnRefreshLoadMoreListener(object : OnRefreshLoadMoreListener {
override fun onLoadMore(refreshLayout: RefreshLayout) {
loadmore()
}
override fun onRefresh(refreshLayout: RefreshLayout) {
refresh()
}
})
結(jié)束刷新
override fun endRefreshAndLoadMore() {
super.endRefreshAndLoadMore()
smart.finishRefresh()
smart.finishLoadMore()
}
在p層的時(shí)候記得要調(diào)用
mView.endRefreshAndLoadMore()
如果加載到最后一頁沒有數(shù)據(jù)了提示沒有更多數(shù)據(jù)
smart.setNoMoreData(true)//沒有更多數(shù)據(jù)
smart.setNoMoreData(false)//還有更多數(shù)據(jù) 默認(rèn)的是false