關于會話列表的置頂聊天

最近搞完了置頂聊天,來寫篇文章分享下經驗。

其實剛剛開始 ,我自己在想,我是不是要去做出類似于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來這,給你解答你的問題

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容