最近搞完了置顶聊天,来写篇文章分享下经验。

其实刚刚开始 ,我自己在想,我是不是要去做出类似于QQ那种的滑动,然后显示置顶和删除。

图1

我就开始写,写完了之后然后去置顶,取消置顶,其实是有用的,但是为什么我到最后还是没有选择这个效果呢?

因为这个最后是要到Adapter里面去设置这两个按钮,我本人并不喜欢这东西放到Adapter里面,接下来强迫症来了,直接把代码全部删除,换一种思路..........我想到了微信,点击弹出一个菜单,和dialog很很像的一个功能。

好,来跟着我一起走一下思路。

首先是,要实现置顶聊天,那么我们就要有两个List集合,一个是置顶的,一个是不是置顶的,然后置顶的是需要一个小小的数据库去保存置顶的对话人的UserName;这里,环信给出了EMConversation的一个方法,带大家看看技术文档

图2

这里框出来的就是我们要用的至关重要的方法,特别重要,

图3

看下这个文档里面说的非常清楚,也就是扩展字段,设置一个扩展字段我们才知道这条Conversation的特别之处,然后去判断这个会话有没有设置扩展消息,有的话,那就排到置顶的那个集合里面去。

接下来我们要准备的是数据库

图4

也就是这两个东西,准备就绪,蓝后 ..... 要开始大动,也就是把关于会话列表里面的东西全部放到项目里面来。

图5

所要动的就是这3个类,全部移动到项目中,因为数据库要在Adapter和ListView里面操作,这一步很简单,动动手就行。

那么这些全部做完之后,我们开始写代码了,仿照通讯录的数据库来

图6

这里就是getset,然后在DemoHelper里面

图7

蓝后,再Application里面去给它暴露出两个方法。

图8

好了,数据库的东西是配置完成了,那么,问题就来了,怎么去启动数据库?

图9

这样就添加了数据库,注意,这里添加了数据库之后,然后再去真正的写置顶的代码了。。。。

首先我们先看看会话列表界面

图10

在setupView方法中,别忘了获取数据库里面的置顶会话。

这里直接贴出来了ConversationListFragment,这里就是把EaseUI里面的EaseConversationlistFragment里面的内容,然后BaseFragment也就是EaseBaseFragment里面的内容了。

图11

主要加载会话的方法就是这个方法,主要代码就是synchronized里面的内容,这里很容易就能够理解For循环里面的内容,然后我们要在这里面判断,有没有会话是包含扩展字段的,有的话就将包含扩展字段的会话放入top_list这个集合里面;蓝后你们可以看到topList,这个List就是图10里面的topList,topMap也是图10里面的。蓝后,我们可以看到排序方法,也就是会话列表的排序方法(sortConversationByLastChatTime),这里我自己写了一个排序方法,并没有用到Pair

图12

其实这两个方法是一样的,一样的效果。

那么接下来,就是看看ConversationList

图13

最主要的就是这个init方法,也没什么说的。。那么接下来就到ConversationAdapter

图14

这里就和EaseUI里面的那个EaseConversationAdapter有点不一样了,EaseConversationAdapter里面是继承ArrayAdapter的,这里是继承BaseAdapter,在这里使用BaseAdapter为了方便大家能够理解。

我们只需要在getItem和getCount里面做点手脚就可以了

图15

好了,到这里就完成了整个置顶会话的显示,那么接下来,我们就要写一下置顶功能了,这里很有必要说明下,个人意见,在写会话列表的时候,推荐使用一个Fragment去继承EaseConversationListFragment。继承之后我们就可以重写setUpView方法,在这方法里面我们进行一系列的操作。

图16

这里就是用到的长按事件,然后显示一个Dialog,在Dialog里面去实现置顶功能的操作。这里由于代码过长,所以截两张图。。。。

图17

图17主要就是Dialog的显示

图18

在这里就是删除会话等这个按钮的点击事件。

图19

在里就是置顶的点击事件了。。

好了 到这里已经完成了置顶的全部代码展示了。个人感觉还是很详细的,如果还是不懂,那就环信互帮互助-非官方 340452063来这,给你解答你的问题

android环信删除会话列表,关于会话列表的置顶聊天相关推荐

  1. android环信删除会话列表,关于环信删除会话之后,从好友列表进入无法显示聊天消息...

    如果不删除会话的时候,从好友列表点击进入可以显示历史聊天的的消息,只要执行删除会话,在从好友列表进入会话,聊天消息不显示,如果在聊天输入框发送消息,所有消息又会显示出来. 下面是调取环信接口的代码片段 ...

  2. android 头像简称,Android环信显示头像及昵称的简单方法

    在我们日常应用开发中,很多时候产品需要IM聊天功能.考虑到时间.难度等问题一般会选择集成一些比较稳定的第三方SDK来实现功能.最近的项目也有IM需求,因为之前用过环信,感觉还不错,所以就再次使用了环信 ...

  3. Android环信3.0即时通讯云入门指北

    Android环信3.0即时通讯云入门指北 官方文档 http://docs-im.easemob.com/im/android/sdk/import 基础集成 http://docs-im.ease ...

  4. Android 环信聊天历史记录搜索分组展示

    最近开发IM,用到了环信,其中一个功能未聊天记录搜索功能,先上图 1.好友和群聊搜索适合自己的服务器交互的不涉及环信 2.聊天记录搜索列表 聊天搜索结果列表是以会话列表分组的所以首先获取聊天的所有会话 ...

  5. Android 环信IM接受离线消息

    Android 环信IM接受离线消息 已经按照官方文档上面写了,结果还是没有接受到离线消息,但是离线消息确实显示在了列表里面. 实际上 android 环信IM是有这个方法的,只是平时没有开启而已.我 ...

  6. android项目模块导入eclipse编译报错,android环信demo导入eclipse编译出错

    官网最新下载的android环信sdk,导入编译出错:java.lang.RuntimeException: Unable to instantiate application com.hyphena ...

  7. Java 使用LinkedList模拟KTV点歌系统,首先先添加若干歌曲,如果歌曲列表中已有该歌曲,则不加入,否则追加。`然后选择列表中的其中一首置顶,最后选择列表中一首歌曲前置一位。

    使用LinkedList模拟KTV点歌系统 该系统的任务是执行3个操作:首先先添加若干歌曲,如果歌曲列表中已有该歌曲,则不加入,否则追加.`然后选择列表中的其中一首置顶,最后选择列表中一首歌曲前置一位 ...

  8. android 环信消息红点,环信3.0获取会话消息列表

    环信2.0有一个获取消息列表的方法 /*! @method @brief 从数据库中加载消息 @discussion @result 加载的消息列表 */ - (NSArray *)loadAllMe ...

  9. php环信发送消息,环信即时通讯 —— 消息、会话

    标签: 1.消息EMMessage 环信支持文字.图片.位置.语音.视频.文件.透传.自定义八种消息构造.消息,即IM交互实体,在SDK中对应的类型是 **EMMessage**,EMMessage可 ...

最新文章

  1. 01_字符串处理-----04_在文本中应用ZIpf定律
  2. 四、Java多人博客系统-2.0版本
  3. 03构建之法阅读笔记之三
  4. java验证码(采用struts2实现)转
  5. 山东大学linux实验四CSDN,山东大学操作系统实验报告材料4进程同步实验
  6. 2_C语言中的数据类型 (六)浮点数
  7. Android图片加载之初步认识bitmap
  8. JVM探索之路之Class文件结构解析(一):Class文件的格式与定义
  9. MATLAB图像复原系统
  10. 咱们的课程里,有微信的这种菜单示例吗?---酷课堂iOS交流群问答整理(201810期)
  11. 51单片机学习笔记——DA转换
  12. 怎样将多个视频快速分割成两段或者多段
  13. C语言编程-随机步法的实现
  14. zk-snark的算法详解
  15. fastadmin框架里基于x-editable实现的表格无刷新行内编辑功能的插件的‘datetime‘时间类型无法使用的解决方法
  16. 微信公众号【黄小斜】和【Java技术江湖】
  17. abl如何调用xbl里面的protocol
  18. Error: Socket descriptor not found. Hint: the problem might be solved applying the following:
  19. fatfs文件系统详解之f_mount函数分析
  20. 维度表和事实表的含义

热门文章

  1. zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql
  2. MySQL 检索昵称字段合法中文/日文字符对于 5.7/5.6 版本失败的解决方案
  3. 华为鸿蒙操作a股,来了!华为“鸿蒙” 这一次它会给A股带来哪些惊喜
  4. fabric java sdk解析channel.queryTransactionByID(txId)方法的返回值
  5. ef1a启动子_启动子的选择和预测
  6. 极光小课堂 | 极光一键登录集成手册--Android
  7. python int语句_Python语句print(int('20',16), int('101',2))的输出结果是
  8. scp传文件指定端口、传输目录
  9. css3 书页卷脚_css3实现的书本立体翻页效果代码实例
  10. 机器学习案例:孕妇吸烟与胎儿健康