# android-lib **Repository Path**: luohaolun/android-lib ## Basic Information - **Project Name**: android-lib - **Description**: 整理些安卓常用库,不断更新维护 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-03-16 - **Last Updated**: 2021-06-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # AbsListView RecyclerView 通用适配器 ### 说明 超简化代码,高阶函数参数简化为1,使用非常方便。多类型注意数据源的构造 data:List> 从2.1版本起仓库转移至码云并更名为android-lib。2.1版本之前:[https://github.com/luohaolun/adapter](https://github.com/luohaolun/adapter) 2.0之后版本合并log库: [https://github.com/luohaolun/log](https://github.com/luohaolun/log) ### 添加依赖 > Project build.gradle allprojects { repositories { ... maven { url 'https://www.jitpack.io' } } } > Module build.gradle dependencies { implementation 'com.gitee.luohaolun:android-lib:2.2' } ### BaseAdapter使用 > 通常 val data = mutableListOf() for (i in 0..10) { data.add(i.toString()) } lvList.adapter = Adapter(data, R.layout.item_test) { tvNum.text = it } > 多类型Item val data = mutableListOf>() for (i in 0..20) { if (i < 4) data.add(Pair(0, i.toString())) else data.add(Pair(1, i.toString())) } >> MultiAdapter lvList.adapter = MultiAdapter(data, SparseArray().apply { put(0, R.layout.item_test);put(1, R.layout.item_test_2) }) { when (type) { 0 -> { tvNum.text = "$it 类型0" } 1 -> { tvNum.text = "$it 类型1" } } } >> MulAdapter lvList.adapter = MulAdapter(data, 0, R.layout.item_test) { tvNum.text = "$it 类型1" }.addItemType(1, R.layout.item_test_2) { tvNum.text = "$it 类型2" } ### RecyclerView.Adapter使用 > 通常 val data = mutableListOf() for (i in 0..10) { data.add(i.toString()) } recyList.adapter = RecyclerAdapter(data, R.layout.item_test) { tvNum.text = it }.setOnItemClickListener(500) { //点击间隔 500ms Toast.makeText(this@MainActivity, "点击 $position $it", Toast.LENGTH_SHORT).show() }.setOnItemLongClickListener { Toast.makeText(this@MainActivity, "长按 $position $it", Toast.LENGTH_SHORT).show() } > 多类型Item val data = mutableListOf>() for (i in 0..20) { if (i < 4) data.add(Pair(0, i.toString())) else data.add(Pair(1, i.toString())) } >> MultiRecyclerAdapter recyList.adapter = MultiRecyclerAdapter(data, SparseArray().apply { put(0, R.layout.item_test);put(1, R.layout.item_test_2) }) { when (type) { 0 -> { tvNum.text = it } 1 -> { tvNum.text = it } } }.setOnItemClickListener { Toast.makeText(this@MainActivity, "点击 $position $it", Toast.LENGTH_SHORT).show() }.setOnItemLongClickListener { Toast.makeText(this@MainActivity, "长按 $position $it", Toast.LENGTH_SHORT).show() } >> MulRecyclerAdapter recyList.adapter = MulRecyclerAdapter(data, 0, R.layout.item_test) { tvNum.text = it }.addItemType(1, R.layout.item_test_2) { tvNum.text = it }.setOnItemClickListener { Toast.makeText(this@MainActivity, "点击 $position $it", Toast.LENGTH_SHORT).show() }.setOnItemLongClickListener { Toast.makeText(this@MainActivity, "长按 $position $it", Toast.LENGTH_SHORT).show() } ### 下拉刷新和上拉加载RefreshLayout >>使用 自带布局预览,RecyclerView可替换为任意View,如TextView、LinearLayout.. >>自定义头部或底部: 1.继承BaseHeaderOrFooterView 2.设置 xml:app:headerClass/footerClass = "k.lhl.test.MyHeaderView" // 完整包路径 代码:refresh.setHeader(MyHeaderView::class.java) // class ### PullRecyclerView 继承自RefreshLayout,对RecyclerView的扩展 >>使用