This commit is contained in:
2023-10-08 22:36:18 +08:00
parent e4cd95951c
commit 05d4f84844
25 changed files with 498 additions and 106 deletions

View File

@@ -2,10 +2,14 @@ package com.shayu.onetoone.adapter;
import android.text.SpannableString;
import com.yanzhenjie.recyclerview.SwipeRecyclerView;
import androidx.annotation.NonNull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -14,6 +18,7 @@ import io.rong.imkit.conversationlist.ConversationListAdapter;
import io.rong.imkit.conversationlist.model.BaseUiConversation;
import io.rong.imkit.conversationlist.model.SingleConversation;
import io.rong.imkit.widget.adapter.ViewHolder;
import io.rong.imkit.widget.refresh.SmartRefreshLayout;
import io.rong.imlib.model.Conversation;
/**
@@ -21,42 +26,65 @@ import io.rong.imlib.model.Conversation;
*/
public class MsgMessageRecyclerViewAdapter extends ConversationListAdapter {
List<BaseUiConversation> conversationList = null;
Map<BaseUiConversation, Integer> map = new HashMap<>();
Map<Integer,BaseUiConversation> map = new HashMap<>();
SwipeRecyclerView mList;
public MsgMessageRecyclerViewAdapter(SwipeRecyclerView mList) {
this.mList = mList;
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
String targetId = getData().get(position).mCore.getTargetId();
try {
int type=Integer.parseInt(targetId);
mList.setSwipeItemMenuEnabled(position, type > 100);
}catch (Exception e){
e.printStackTrace();
}
super.onBindViewHolder(holder, position);
}
@Override
public void setDataCollection(List<BaseUiConversation> data) {
List<BaseUiConversation> tmp = new ArrayList<>();
if(conversationList!=null) {
tmp.addAll(conversationList);
}
conversationList = new ArrayList<>(data);
List<BaseUiConversation> top = new ArrayList<>();
List<BaseUiConversation> data2 = new ArrayList<>();
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) + "...·");
if (datum.mCore.getConversationType() == Conversation.ConversationType.PRIVATE || datum.mCore.getConversationType() == Conversation.ConversationType.SYSTEM) {
if (datum.mCore.isTop()) {
top.add(datum);
} else {
conversation.mConversationContent = new SpannableString(conversation.mConversationContent.toString() + "·");
data2.add(datum);
}
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);
List<BaseUiConversation> list = new ArrayList<>(top);
data2.addAll(map.values());
Collections.sort(data2,new ListComparator());
list.addAll(data2);
super.setDataCollection(list);
}
public void add(SingleConversation item, int position) {
map.put(item, position);
map.put(position,item);
}
public void clearSystemNotification(){
for (BaseUiConversation conversation : map.values()) {
conversation.mCore.setUnreadMessageCount(0);
}
}
private class ListComparator implements Comparator<BaseUiConversation> {
@Override
public int compare(BaseUiConversation baseUiConversation, BaseUiConversation t1) {
System.out.println(" "+t1.mCore.getSentTime()+"|"+baseUiConversation.mCore.getSentTime()+" "+baseUiConversation.mCore.getConversationTitle()+"|"+t1.mCore.getConversationTitle());
return (int) (t1.mCore.getSentTime()-baseUiConversation.mCore.getSentTime());
}
}
}