From 7600f0d0414e8c3e7a5d2ec04add1d403e4395c5 Mon Sep 17 00:00:00 2001 From: itgaojian163 Date: Wed, 30 Oct 2024 20:55:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../aimz_k/adapter/ChatMsgAdapter.kt | 8 +++++- .../com/tenlionsoft/aimz_k/model/MsgBean.kt | 3 ++- .../aimz_k/model/MsgTypeStateEnum.kt | 2 +- .../tenlionsoft/aimz_k/widget/BindingUtils.kt | 26 +++++++++++++++++++ app/src/main/res/layout/item_msg_my.xml | 3 ++- app/src/main/res/layout/item_msg_my_audio.xml | 3 +++ app/src/main/res/layout/item_msg_my_img.xml | 3 +++ app/src/main/res/layout/item_msg_my_video.xml | 3 +++ app/src/main/res/layout/item_msg_other.xml | 4 +++ .../main/res/layout/item_msg_other_audio.xml | 13 ++++++++-- .../main/res/layout/item_msg_other_img.xml | 3 +++ .../main/res/layout/item_msg_other_video.xml | 3 +++ 12 files changed, 68 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/adapter/ChatMsgAdapter.kt b/app/src/main/java/com/tenlionsoft/aimz_k/adapter/ChatMsgAdapter.kt index 9ecb444..4c259bd 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/adapter/ChatMsgAdapter.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/adapter/ChatMsgAdapter.kt @@ -117,31 +117,37 @@ class ChatMsgAdapter(var datas: List) : MsgTypeStateEnum.MSG_FROM_OTHER_TXT -> { (holder.binding as ItemMsgOtherBinding).pos = position (holder.binding as ItemMsgOtherBinding).bean = list[position] + (holder.binding as ItemMsgOtherBinding).state = list[position].sendState }//收到文本信息 MsgTypeStateEnum.MSG_TO_OTHER_MOVIE -> { (holder.binding as ItemMsgMyVideoBinding).pos = position (holder.binding as ItemMsgMyVideoBinding).bean = list[position] + (holder.binding as ItemMsgMyVideoBinding).state = list[position].sendState }//发送视频 MsgTypeStateEnum.MSG_FROM_OTHER_MOVIE -> { (holder.binding as ItemMsgOtherVideoBinding).pos = position (holder.binding as ItemMsgOtherVideoBinding).bean = list[position] + (holder.binding as ItemMsgOtherVideoBinding).state = list[position].sendState }//收到视频 MsgTypeStateEnum.MSG_TO_OTHER_IMG -> { (holder.binding as ItemMsgMyImgBinding).pos = position (holder.binding as ItemMsgMyImgBinding).bean = list[position] + (holder.binding as ItemMsgMyImgBinding).state = list[position].sendState }//发送图片 MsgTypeStateEnum.MSG_FROM_OTHER_IMG -> { (holder.binding as ItemMsgOtherImgBinding).pos = position (holder.binding as ItemMsgOtherImgBinding).bean = list[position] + (holder.binding as ItemMsgOtherImgBinding).state = list[position].sendState }//收到图片 MsgTypeStateEnum.MSG_TO_OTHER_VOICE -> { (holder.binding as ItemMsgMyAudioBinding).pos = position (holder.binding as ItemMsgMyAudioBinding).bean = list[position] - + (holder.binding as ItemMsgMyAudioBinding).state = list[position].sendState }//语音 MsgTypeStateEnum.MSG_FROM_OTHER_VOICE -> { (holder.binding as ItemMsgOtherAudioBinding).pos = position (holder.binding as ItemMsgOtherAudioBinding).bean = list[position] + (holder.binding as ItemMsgOtherAudioBinding).state = list[position].sendState }//语音 else -> { throw IllegalArgumentException("Invalid view type") diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgBean.kt b/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgBean.kt index bef74ee..523f7d7 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgBean.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgBean.kt @@ -4,6 +4,7 @@ import androidx.room.ColumnInfo import androidx.room.Entity import androidx.room.Ignore import androidx.room.PrimaryKey +import androidx.room.TypeConverters import java.io.Serializable @Entity(tableName = "db_msg") @@ -21,7 +22,7 @@ data class MsgBean( @ColumnInfo(name = "body") var body: String, //消息体 @ColumnInfo(name = "timestamp") - var timestamp: Long, // 时间戳 + var timestamp: Long, @ColumnInfo(name = "sendState") var sendState: Int, //发送状态 11发送中 12发送失败 13发送成功 @ColumnInfo(name = "fromName") diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgTypeStateEnum.kt b/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgTypeStateEnum.kt index 2ad028e..0241619 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgTypeStateEnum.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/model/MsgTypeStateEnum.kt @@ -28,13 +28,13 @@ object MsgTypeStateEnum { const val MSG_FROM_OTHER_FILE: Int = 152 // * 152 其他人发送给我的文件信息 const val MSG_TO_OTHER_HREF: Int = 161 // * 161 我发送给其他人的文件信息 const val MSG_FROM_OTHER_HREF: Int = 162 // * 162 其他人发送给我的文件信息 - const val MSG_SEND_ING: Int = 1001//11 //发送中 const val MSG_SEND_FAIL: Int = 1002//12 //发送失败 const val MSG_SEND_SUCCESS: Int = 1003////发送成功 } +@Target(AnnotationTarget.TYPE, AnnotationTarget.VALUE_PARAMETER) @IntDef( MSG_TO_OTHER_TXT, MSG_FROM_OTHER_TXT, diff --git a/app/src/main/java/com/tenlionsoft/aimz_k/widget/BindingUtils.kt b/app/src/main/java/com/tenlionsoft/aimz_k/widget/BindingUtils.kt index a580b23..d20f330 100644 --- a/app/src/main/java/com/tenlionsoft/aimz_k/widget/BindingUtils.kt +++ b/app/src/main/java/com/tenlionsoft/aimz_k/widget/BindingUtils.kt @@ -1,5 +1,6 @@ package com.tenlionsoft.aimz_k.widget +import android.view.View import android.widget.ImageView import androidx.databinding.BindingAdapter import androidx.recyclerview.widget.LinearLayoutManager @@ -9,6 +10,7 @@ import com.bumptech.glide.Glide import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.request.RequestOptions import com.tenlionsoft.aimz_k.R +import com.tenlionsoft.aimz_k.model.MsgTypeStateEnum object BindingUtils { @@ -46,4 +48,28 @@ object BindingUtils { imageView.setImageResource(url) } + + //发送中 + @BindingAdapter("isShowLoading") + @JvmStatic + fun sending(view: View, status: Int) { + when (status) { + MsgTypeStateEnum.MSG_SEND_SUCCESS -> view.visibility = View.GONE + MsgTypeStateEnum.MSG_SEND_FAIL -> view.visibility = View.GONE + MsgTypeStateEnum.MSG_SEND_ING -> view.visibility = View.VISIBLE + else -> view.visibility = View.GONE + } + } + + //发送失败 + @BindingAdapter("isShowFail") + @JvmStatic + fun sendFail(view: View, status: Int) { + when (status) { + MsgTypeStateEnum.MSG_SEND_SUCCESS -> view.visibility = View.GONE + MsgTypeStateEnum.MSG_SEND_FAIL -> view.visibility = View.GONE + MsgTypeStateEnum.MSG_SEND_ING -> view.visibility = View.VISIBLE + else -> view.visibility = View.GONE + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_my.xml b/app/src/main/res/layout/item_msg_my.xml index db4e3a2..0551171 100644 --- a/app/src/main/res/layout/item_msg_my.xml +++ b/app/src/main/res/layout/item_msg_my.xml @@ -11,9 +11,10 @@ + + type="Integer" /> + + + + + + + + + + + + tools:visibility="gone" /> \ No newline at end of file diff --git a/app/src/main/res/layout/item_msg_other_img.xml b/app/src/main/res/layout/item_msg_other_img.xml index deea7e0..28d74d6 100644 --- a/app/src/main/res/layout/item_msg_other_img.xml +++ b/app/src/main/res/layout/item_msg_other_img.xml @@ -11,6 +11,9 @@ + +