Android Kotlin 仿微信通讯录 Demo 实现:含字母滑动定位、增删改查、详情
以下是如何使用 Kotlin 实现仿微信通讯录 Demo 的示例代码:
- 创建一个
Contact类表示通讯录联系人:
data class Contact(val name: String, val phoneNumber: String, val avatar: String)
- 创建一个
ContactAdapter类继承自RecyclerView.Adapter,用于显示通讯录列表:
class ContactAdapter(private val contacts: List<Contact>) : RecyclerView.Adapter<ContactAdapter.ContactViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContactViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_contact, parent, false)
return ContactViewHolder(view)
}
override fun onBindViewHolder(holder: ContactViewHolder, position: Int) {
val contact = contacts[position]
holder.nameTextView.text = contact.name
holder.phoneNumberTextView.text = contact.phoneNumber
// 加载头像等操作
}
override fun getItemCount(): Int {
return contacts.size
}
inner class ContactViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
val nameTextView: TextView = itemView.findViewById(R.id.nameTextView)
val phoneNumberTextView: TextView = itemView.findViewById(R.id.phoneNumberTextView)
// 头像 ImageView 等
}
}
- 创建一个
MainActivity类,用于显示通讯录列表和处理通讯录操作:
class MainActivity : AppCompatActivity() {
private lateinit var recyclerView: RecyclerView
private lateinit var contactAdapter: ContactAdapter
private lateinit var contacts: MutableList<Contact>
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
recyclerView = findViewById(R.id.recyclerView)
recyclerView.layoutManager = LinearLayoutManager(this)
// 模拟数据
contacts = mutableListOf(
Contact('张三', '1234567890', 'avatar1'),
Contact('李四', '0987654321', 'avatar2'),
// ...
)
contactAdapter = ContactAdapter(contacts)
recyclerView.adapter = contactAdapter
}
// 添加联系人
fun addContact(contact: Contact) {
contacts.add(contact)
contactAdapter.notifyDataSetChanged()
}
// 删除联系人
fun removeContact(contact: Contact) {
contacts.remove(contact)
contactAdapter.notifyDataSetChanged()
}
// 修改联系人
fun updateContact(oldContact: Contact, newContact: Contact) {
val index = contacts.indexOf(oldContact)
if (index != -1) {
contacts[index] = newContact
contactAdapter.notifyDataSetChanged()
}
}
// 查询联系人
fun searchContact(name: String): Contact? {
return contacts.find { it.name == name }
}
// 显示联系人详情
fun showContactDetails(contact: Contact) {
// 在此处实现显示联系人详情的逻辑
}
}
-
在 XML 布局文件中添加
RecyclerView和相关布局文件(例如item_contact.xml)。 -
在
MainActivity的布局文件中添加一个搜索框和其他布局(例如联系人详情页面)。
这样就完成了一个简单的仿微信通讯录 Demo,其中包含按字母滑动定位通讯录列表、通讯录增删改查以及通讯录详情的功能。你可以根据实际需求进行扩展和修改。
原文地址: https://www.cveoy.top/t/topic/bUTm 著作权归作者所有。请勿转载和采集!