这段代码是RecyclerView的Adapter中的convert()方法,用于将数据绑定到ViewHolder上。根据ChatBean的itemType来判断当前是回复消息还是自己发送的消息,然后分别设置头像和文本内容。
具体实现步骤如下:
1. 在布局文件中添加一个LinearLayout作为聊天界面的容器,并设置其高度为match_parent。
```
```
2. 创建一个ChatBean类来表示聊天消息,包含文本内容和消息类型两个属性。
```
class ChatBean(val text: String, val itemType: Int) {
companion object {
const val ITEM_TYPE_ANSWER = 0 // 回复消息
const val ITEM_TYPE_SELF = 1 // 自己发送的消息
}
}
```
3. 创建一个ChatAdapter类来管理聊天消息列表的数据。
```
class ChatAdapter(private val data: MutableList) : RecyclerView.Adapter() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.item_chat, parent, false)
return RecyclerViewHolder(view)
}
override fun onBindViewHolder(holder: RecyclerViewHolder, position: Int) {
val item = data[position]
if (item.itemType == ChatBean.ITEM_TYPE_ANSWER || item.itemType == ChatBean.ITEM_TYPE_SELF) {
val mTvText = holder.getTextView(R.id.tv_content)
val mIvAvatar = holder.getImageView(R.id.iv_avatar)
mTvText.text = item.text
GlideUtil.loadCircleImage(R.drawable.ic_avatar_default, mIvAvatar, null)
}
}
override fun getItemCount(): Int {
return data.size
}
fun addChatBean(chatBean: ChatBean) {
data.add(chatBean)
notifyItemInserted(data.size - 1)
}
}
```
4. 在Activity或Fragment中初始化ChatAdapter,并将其设置为RecyclerView的Adapter。
```
val rvChat = findViewById(R.id.rv_chat)
rvChat