This commit is contained in:
2023-10-07 14:59:21 +08:00
parent cd74b7140e
commit e7ce538d78
31 changed files with 1298 additions and 395 deletions

View File

@@ -1,21 +1,14 @@
package com.shayu.onetoone.adapter;
import android.content.Context;
import android.text.SpannableString;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.bean.MsgMessageBean;
import com.yunbao.common.glide.ImgLoader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import io.rong.imkit.conversationlist.ConversationListAdapter;
import io.rong.imkit.conversationlist.model.BaseUiConversation;
@@ -27,19 +20,43 @@ import io.rong.imlib.model.Conversation;
* 聊天列表适配器
*/
public class MsgMessageRecyclerViewAdapter extends ConversationListAdapter {
List<BaseUiConversation> conversationList = null;
Map<BaseUiConversation, Integer> map = new HashMap<>();
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
BaseUiConversation uiConversation = mDataList.get(position);
if (uiConversation.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
SingleConversation conversation = (SingleConversation) uiConversation;
if (conversation.mConversationContent.length() >= 6) {
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString().substring(0, 6) + "...·");
} else {
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString() + " ·");
}
} else if (uiConversation.mCore.getConversationType() == Conversation.ConversationType.GROUP) {
mDataList.remove(position);
}
super.onBindViewHolder(holder, position);
}
@Override
public void setDataCollection(List<BaseUiConversation> data) {
List<BaseUiConversation> tmp = new ArrayList<>();
if(conversationList!=null) {
tmp.addAll(conversationList);
}
for (BaseUiConversation datum : data) {
if (datum.mCore.getConversationType() == Conversation.ConversationType.PRIVATE) {
SingleConversation conversation = (SingleConversation) datum;
if (conversation.mConversationContent.length() >= 6) {
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString().substring(0, 6) + "...·");
} else {
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString() + "·");
}
tmp.add(datum);
}
}
for (BaseUiConversation conversation : map.keySet()) {
if ( map.get(conversation) >= tmp.size()) {
tmp.add(conversation);
}else{
tmp.add(map.get(conversation),conversation);
}
}
super.setDataCollection(tmp);
}
public void add(SingleConversation item, int position) {
map.put(item, position);
}
}