清单文件加入读写联系人的权限:
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
首先准备个Bean类:
1.用于存储电话与姓名的数据
class MyBean(//联系人的姓名
var name: String?, //联系人的电话
var phone: String?, //phonebook_label用于排序和判断
var phonebook_label: String?, //判断多布局
var type: Int
)
写一个适配器用于多布局加载页面:
class MyAdapter(data: List<MyBean>?) : BaseQuickAdapter<MyBean, BaseViewHolder>(data) {
init {
//设置多布局的个数
multiTypeDelegate = object : MultiTypeDelegate<MyBean>() {
override fun getItemType(myBean: MyBean): Int {
return myBean.type
}
}
//获取多布局
multiTypeDelegate
.registerItemType(0, R.layout.item_titele)
.registerItemType(1, R.layout.item_phone)
}
override fun convert(helper: BaseViewHolder, item: MyBean) {
val type = item.type
when (type) {
//字母标题布局
0 -> helper.setText(R.id.title_text, item.phonebook_label)
//姓名与电话号布局
1 -> helper.setText(R.id.title_phone, item.name!! + item.phone!!)
}
}
}
下面就是Main了:
class MainActivity : AppCompatActivity() {
private val list = ArrayList<MyBean>()
private var mian_re: RecyclerView? = null
private var myAdapter: MyAdapter? = null
private var mian_lv: ListView? = null
private var ad: ArrayAdapter<*>? = null
private val list_count:MutableList<String> = arrayListOf()
@RequiresApi(api = Build.VERSION_CODES.M)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
//动态权限(读取联系人)
requestPermissions(
arrayOf(
"android.permission.READ_CONTACTS",
"android.permission.WRITE_CONTACTS"