Kotlin使用EasyRecycleview

来源:互联网 发布:信广立诚贷之家数据 编辑:程序博客网 时间:2024/06/03 03:25

最近在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中