最近在github上发现一个很好用的基于RecyclerView写的第三方控件,叫做EasyRecycleview,这个控件使用起来很方便,功能也挺强大的,就想着用Kotlin来使用一下它
1.引入
//引入第三方核心控件
compile 'com.jude:easyrecyclerview:4.4.2'
// 悬浮控件
compile 'com.github.clans:fab:1.6.0'
2.使用
因为它的demo中有好几种使用方式,这里选取几种写了一下
(一)带下拉刷新上拉加载更多 功能的界面
控件的声明:
private var mRecyclerView: EasyRecyclerView? = null
private var mGoTop: FloatingActionButton? = null//悬浮控件
//在oncreate方法内
mRecyclerView = findViewById<EasyRecyclerView>(R.id.recyclerView)
mGoTop = findViewById<FloatingActionButton>(R.id.btn_toTop)
接下来是对EasyRecyclerView进行一些初始化
//模式为线性布局
val layoutManager: LinearLayoutManager = LinearLayoutManager(this)
mRecyclerView !!.setLayoutManager(layoutManager)
//分割线
val dividerDecoration: DividerDecoration = DividerDecoration(Color.GRAY, Util.dip2px(this, 16f), Util.dip2px(this, 72f), 0)
dividerDecoration.setDrawLastItem(false)
mRecyclerView !!.addItemDecoration(dividerDecoration)
//类似于java的匿名内部类,需要用到object关键字
mAdapter = object : RecyclerArrayAdapter<Person>(this) {
override fun OnCreateViewHolder(parent: ViewGroup, viewType: Int): BaseViewHolder<*> {
return PersonViewHolder(parent)
}
}
mRecyclerView!!.setAdapterWithProgress(mAdapter)
//设置底部加载更多布局
mAdapter!!.setMore(R.layout.view_more,this)
//设置底部没有更多布局
mAdapter!!.setNoMore(R.layout.view_nomore)
//长按删除
mAdapter!!.setOnItemLongClickListener { position ->
mAdapter!!.remove(position)
true
}
//设置无网络布局
mAdapter!!.setError(R.layout.view_error, object : RecyclerArrayAdapter.OnErrorListener {
override fun onErrorShow() {
mAdapter!!.resumeMore()
}
override fun onErrorClick() {
mAdapter!!.resumeMore()
}
})
//设置刷新监听
mRecyclerView!!.setRefreshListener(this)
onRefresh()
其中刷新的方法是:
override fun onRefresh() {
page = 0
mHander.postDelayed(Runnable {
mAdapter!!.clear()
if (!hasNetWork){
mAdapter!!.pauseMore()
return@Runnable
}
mAdapter!!.addAll(DataProvider.getPersonList(page))
page = 1
},2000)
}
加载更多的方法是:
override fun onLoadMore() {
mHander.postDelayed(Runnable {
if (!hasNetWork) {
mAdapter!!.pauseMore()
return@Runnable
}
mAdapter!!.addAll(DataProvider.getPersonList(page))
page++
}, 2000)
}
最后界面是这样的:
其他:目前还用Kotlin写了使用了协调者布局(CollapsingToolbarLayout)界面和数据的多布局类型界面
具体的代码在:https://github.com/ckwcc/UserEasyRecyclerView中