diff --git a/app/src/main/java/com/xinbida/wukongdemo/ConversationActivity.kt b/app/src/main/java/com/xinbida/wukongdemo/ConversationActivity.kt index 4268045..7bebeeb 100644 --- a/app/src/main/java/com/xinbida/wukongdemo/ConversationActivity.kt +++ b/app/src/main/java/com/xinbida/wukongdemo/ConversationActivity.kt @@ -2,14 +2,12 @@ package com.xinbida.wukongdemo import android.content.Intent import android.os.Bundle -import android.util.Log import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatImageView import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.lxj.xpopup.XPopup -import com.xinbida.wukongdemo.Const.Companion.token import com.xinbida.wukongim.WKIM import com.xinbida.wukongim.entity.WKChannelType import com.xinbida.wukongim.message.type.WKConnectStatus @@ -21,18 +19,16 @@ class ConversationActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.act_conv_layout) - - - initView() initListener() - initData() WKIM.getInstance().isDebug = true // 初始化 - WKIM.getInstance().init(this, Const.uid, token) + WKIM.getInstance().init(this, Const.uid, Const.token) // 连接 WKIM.getInstance().connectionManager.connection() + + initData() } private fun initView() { @@ -48,7 +44,6 @@ class ConversationActivity : AppCompatActivity() { WKIM.getInstance().connectionManager.addOnConnectionStatusListener( "conv" ) { code, _ -> - Log.e("连接撞头", "$code") when (code) { WKConnectStatus.connecting -> { titleTv.setText(R.string.connecting) @@ -65,9 +60,11 @@ class ConversationActivity : AppCompatActivity() { WKConnectStatus.syncMsg -> { titleTv.setText(R.string.connect_syncing) } + WKConnectStatus.noNetwork -> { titleTv.setText(R.string.no_net) } + WKConnectStatus.syncCompleted -> { titleTv.setText(R.string.connect_success) } @@ -89,11 +86,12 @@ class ConversationActivity : AppCompatActivity() { } } } - + var number = 0 WKIM.getInstance().conversationManager.addOnRefreshMsgListener( "conv" - ) { uiConversationMsg, _ -> + ) { uiConversationMsg, isEnd -> var isAdd = true + number++ for (index in adapter.data.indices) { if (adapter.data[index].channelID == uiConversationMsg?.channelID) { isAdd = false @@ -107,14 +105,35 @@ class ConversationActivity : AppCompatActivity() { adapter.data[index].lastMsgTimestamp = uiConversationMsg.lastMsgTimestamp if (recyclerView.scrollState == RecyclerView.SCROLL_STATE_IDLE || (!recyclerView.isComputingLayout)) { - adapter.notifyItemChanged(index) + recyclerView.post { + if (index == 0) { + adapter.notifyItemChanged(index) + } else { + adapter.removeAt(index) + adapter.addData(0, uiConversationMsg) + recyclerView.post { + recyclerView.scrollToPosition(0) + } + } + + } } break } } if (isAdd) { adapter.addData(0, uiConversationMsg!!) - recyclerView.scrollToPosition(0) + } + if (isEnd) { + if (number > 1) { + val list = adapter.data + list.sortByDescending { it.lastMsgTimestamp } + adapter.setList(list) + recyclerView.post { + recyclerView.scrollToPosition(0) + } + } + number = 0; } } findViewById(R.id.addIV).setOnClickListener { diff --git a/app/src/main/java/com/xinbida/wukongdemo/LoginActivity.java b/app/src/main/java/com/xinbida/wukongdemo/LoginActivity.java index 372d4f9..7370712 100644 --- a/app/src/main/java/com/xinbida/wukongdemo/LoginActivity.java +++ b/app/src/main/java/com/xinbida/wukongdemo/LoginActivity.java @@ -53,10 +53,6 @@ public class LoginActivity extends AppCompatActivity { Const.Companion.setToken(token); Const.Companion.setUid(uid); Intent intent = new Intent(LoginActivity.this, ConversationActivity.class); - -// Intent intent = new Intent(LoginActivity.this, MainActivity.class); -// intent.putExtra("uid", uid); -// intent.putExtra("token", token); startActivity(intent); finish(); }); diff --git a/app/src/main/java/com/xinbida/wukongdemo/MainActivity.java b/app/src/main/java/com/xinbida/wukongdemo/MainActivity.java index e91d6ff..dca44ec 100644 --- a/app/src/main/java/com/xinbida/wukongdemo/MainActivity.java +++ b/app/src/main/java/com/xinbida/wukongdemo/MainActivity.java @@ -61,7 +61,10 @@ public class MainActivity extends AppCompatActivity { if (isLoading) { return; } - long orderSeq = adapter.getData().get(0).msg.orderSeq; + long orderSeq = 0; + if (!adapter.getData().isEmpty()) { + orderSeq = adapter.getData().get(0).msg.orderSeq; + } getData(orderSeq, 0, false, false); } @@ -69,7 +72,10 @@ public class MainActivity extends AppCompatActivity { if (isLoading) { return; } - long orderSeq = adapter.getData().get(adapter.getData().size() - 1).msg.orderSeq; + long orderSeq = 0; + if (!adapter.getData().isEmpty()) { + orderSeq = adapter.getData().get(adapter.getData().size() - 1).msg.orderSeq; + } getData(orderSeq, 1, false, false); } @@ -142,9 +148,9 @@ public class MainActivity extends AppCompatActivity { // 新消息监听 WKIM.getInstance().getMsgManager().addOnNewMsgListener("new_msg", msgList -> { for (WKMsg msg : msgList) { - if (msg.type==56) { + if (msg.type == 56) { adapter.addData(new UIMessageEntity(msg, 3)); - }else { + } else { adapter.addData(new UIMessageEntity(msg, 0)); } } @@ -152,9 +158,9 @@ public class MainActivity extends AppCompatActivity { }); // 监听发送消息入库返回 WKIM.getInstance().getMsgManager().addOnSendMsgCallback("insert_msg", msg -> { - if (msg.type==56){ + if (msg.type == 56) { adapter.addData(new UIMessageEntity(msg, 2)); - }else { + } else { adapter.addData(new UIMessageEntity(msg, 1)); } recyclerView.scrollToPosition(adapter.getData().size() - 1); diff --git a/app/src/main/java/com/xinbida/wukongdemo/WKApplication.kt b/app/src/main/java/com/xinbida/wukongdemo/WKApplication.kt index 1c29da9..6765701 100644 --- a/app/src/main/java/com/xinbida/wukongdemo/WKApplication.kt +++ b/app/src/main/java/com/xinbida/wukongdemo/WKApplication.kt @@ -25,8 +25,8 @@ class WKApplication : Application() { private val avatars = arrayOf( "https://lmg.jj20.com/up/allimg/tx29/06052048151752929.png", - "https://pic.imeitou.com/uploads/allimg/2021061715/aqg1wx3nsds.jpg", - "https://lmg.jj20.com/up/allimg/tx30/10121138219844229.jpg", + "https://img1.baidu.com/it/u=1653751609,236581088&fm=253&fmt=auto&app=120&f=JPEG?w=500&h=500", + "https://img0.baidu.com/it/u=1008951549,1654888911&fm=253&fmt=auto&app=120&f=JPEG?w=800&h=800", "https://lmg.jj20.com/up/allimg/tx30/10121138219844229.jpg", "https://lmg.jj20.com/up/allimg/tx28/430423183653303.jpg", "https://lmg.jj20.com/up/allimg/tx23/520420024834916.jpg",