聊天会话列表该怎么处理
即时通讯聊天会话列表 需要对该列表做下拉分页 但是在下拉分页过程中又存在返回数据顺序的变化, 即按最后回复时间对会话排序
像这一块,通用做法是什么
即时通讯聊天会话列表 需要对该列表做下拉分页 但是在下拉分页过程中又存在返回数据顺序的变化, 即按最后回复时间对会话排序
像这一块,通用做法是什么
你一定要分页,那就接受分页带来的问题:只能刷新当前页。
“`
由于本地会话可能很多(例如超过 500 个),一次性全部加载完毕可能会耗时很久,导致界面展示比较慢。为了提升用户体验,getConversationList() 接口支持分页拉取能力:
首次调用 getConversationList() 接口时,可以指定其参数 nextSeq 为 0,表示从头开始拉取会话列表,并指定 count 为 50, 表示一次拉取 50 个会话对象。
IM SDK 按照从新到旧的顺序拉取会话列表,当首次拉取会话列表成功后,getConversationList() 的回调结果 V2TIMConversationResult 中会包含下次分页拉取的 nextSeq 字段以及会话拉取是否完成的 isFinish 字段:
如果 isFinished 返回 true,表示所有会话已经拉取完成。
如果 isFinished 返回 false,表示还有更多的会话可以拉取。此时并不意味着要立刻开始拉取“下一页”的会话列表。在常见的通信软件中,分页拉取通常由用户的滑动操作触发的,用户每下拉一次会话列表就触发一次分页拉取。
当用户继续下拉会话列表时,如果还有没有拉取下来的会话列表,可以继续调用 getConversationList 接口,并传入新一轮的 nextSeq 和 count 参数(数值来自上一次拉取返回的 V2TIMConversationResult 对象)。
重复执行 步骤 3 直至 isFinished 返回 true 。
“`
那如果维持一个 list 列表,每次拉取数据,放 list 列表处理,这个容量限制呢?
另外有个,需要特别注意,客户端需要做好标记,防止重复拉取等问题,对于信息框的显示,只显示没有显示过的 id 的信息
那如果,我不点击会话,一直上拉,中途新加入几个会话,这又乱序了。
至于你说的第二个方法,确实简单一些。