update
This commit is contained in:
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user