Kotlin使用EasyRecycleview

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值