即时聊天APP(四) - 联系人和会话

联系人和会话界面使用的是RecyclerView进行滑动显示,并将好友列表存储至数据库,以供下次登录时使用,RecyclerView在后面我会详细介绍,这里略过。

联系人初始化时读取数据库并展示:

//读取数据库中的好友列表
private void read__db() {
    ListlLi = LitePal.findAll(LList.class);
    for (int i=0 ; i<lLi.size(); i++){
        //加个异常
        try{
            LList lLis = new LList(lLi.get(i).getFriends());
            lList.add(lLis);     //读取并添加
        }catch (Exception e) {
            Log.e(TAG, "read__db: 空指针异常");
        }
    }
    // 当有新消息时,刷新ListView中的显示
    adapter.notifyItemInserted(lList.size() - 1);
}  

会话列表读取数据库中的列表并去重然后在展示出来(逻辑可能有点问题):

//读取数据库中的好友列表
public void read__db() {
llList.clear();
llList = LitePal.findAll(ConList.class);
}
//去重
public void delcom() {
Log.e(TAG, "delcom: 删除之前"+llList.size());
int i,j;
Collections.reverse(llList);
for (i=0; i<llList.size(); i++){
    for (j=i+1; j<llList.size(); j++){
        if(llList.get(i).getName().equals(llList.get(j).getName())){
            //有重复,需删除
            llList.remove(llList.get(j));
            Log.e(TAG, "delcom: 删除之后"+llList.size());
        }
    }
}
}
//赋值并显示
private void copyAndshow() {
lList.clear();
ConList lLis;
for (int i=0 ; i<llList.size(); i++){
    //     Toast.makeText(getActivity(),"长度:"+llList.size(),Toast.LENGTH_SHORT).show();
    //加个异常
    try{
        lLis = new ConList(llList.get(i).getName(),llList.get(i).getMessage());
        ad(lLis);
    }catch (Exception e) {
        Log.e(TAG, "read__db: 空指针异常");
    }
}
}

原文地址:https://www.cnblogs.com/zqm-sau/p/10331941.html

时间: 2024-10-09 06:59:32

即时聊天APP(四) - 联系人和会话的相关文章

即时聊天APP(二) - MainActivity

主活动包含三个Fragment,分别是会话.联系人和设置,初始布局隐藏所有碎片,然后把应该显示的显示出来: //隐藏所有Fragment private void hideAll(){ FragmentManager fm = getFragmentManager(); FragmentTransaction ft = fm.beginTransaction(); ft.hide(first) .hide(second) .hide(third) .commit(); } //初始化布局 pri

即时聊天APP(五) - 聊天界面

设置界面没什么好说的,无非也就是加了个对话框来二次提醒用户,现在来讲讲聊天界面. 聊天界面初始化时会得到一个参数,就是对方的id,并设置在标题栏的位置,此界面也是使用RecyclerView来展示聊天消息. 首先为RecyclerView添加布局管理器(线性布局),并且为其添加适配器,写适配器之前先写类,消息类展示: public class Msg extends LitePalSupport { public static final int TYPE_RECEIVED = 0; // 接收

即时聊天APP(六) - 消息的接收以及EventBus使用

通常我们在接收消息的时候会有声音和震动的提示,因此我也加了代码达到这样的效果,这就要用到EventBus了,当然这里我也用到了自定义的广播,所以首先在Mainfests文件中加入以下代码: <receiver android:name=".MylocalMessage" android:process=":bmobpush" > <intent-filter> <!-- 接收自定义广播的action --> <action

即时聊天APP(三) - 注册和登陆

注册和登陆大多都是一些用户名和密码的验证,所以放在一起写,注册代码: String account = accountEdit.getText().toString().trim(); String password = passwordEdit.getText().toString().trim(); String yanzheng = yanzhengma.getText().toString().trim(); if(account.equals("")||password.eq

开发一款即时通讯App,从这几步开始

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由腾讯云视频发表于云+社区专栏 关注公众号"腾讯云视频",一键获取 技术干货 | 优惠活动 | 视频方案 "晚上去哪吃饭啊?" 桌面上来自一条晚上约饭的对话框--QQ. 突然灵光一现,新出了优化的IM SDK,可以尝试着搭建一个类似QQ的即时通讯软件 01 注册账号 腾讯云官网 注册腾讯云账号,也可以使用QQ或者微信直接登陆 02 创建应用 选择[产品]→[云通信]→[立即使用]→[创建应用接入] 03

带后台的IM即时通讯App 全程MVP手把手打造

第1章 课程项目整体概述简单介绍课程适应人群以及主要的实现方案和课程的分节说明:除此之外展示APP使用效果同时了解IM相关协议并对比现有的IM实现方案.当然现如今IM已经不是一个APP而是一个SDK,趋近于嵌入到任何APP中使用:这也是IM推送聊天技术的主要使用场景....1-1 课程概述1-2 入门须知1-3 IM四大协议1-4 实现方案与选型 第2章 推送和存储平台准备这一章是推送方案的基础,在本章中选取了第三方平台以及文件存储平台.推送平台负责消息的送达,而OSS存储服务负责资源文件的存储

Node.js + Web Socket 打造即时聊天程序嗨聊

前端一直是一块充满惊喜的土地,不仅是那些富有创造性的页面,还有那些惊赞的效果及不断推出的新技术.像node.js这样的后端开拓者直接将前端人员的能力扩大到了后端.瞬间就有了一统天下的感觉,来往穿梭于前后端之间代码敲得飞起,从此由前端晋升为'前后端'. 图片来自G+ 本文将使用Node.js加web socket协议打造一个网页即时聊天程序,取名为HiChat,中文翻过来就是'嗨聊',听中文名有点像是专为寂寞单身男女打造的~ 其中将会使用到express和socket.io两个包模块,下面会有介绍

nodejs即时聊天

一直想做一个即时聊天的应用,前几天看到了socket.io,感觉还不错,自己略加修改,感觉挺不错的.官网上给的例子很简单,下面改进了一点,实现了历史消息的推送. demo地址:chat.androiddevelop.cn 其中服务器端代码: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var history = new Ar

android毗邻(Pilin)即时聊天应用源码

毗邻(Pilin)即时聊天应用源码,承诺的 基于xmpp openfire asmack 的即时聊天应用,继续完善,现在只完成了文字.表情.图片的发送.有兴趣的朋友可以继续去完善,不过老实说,代码写得很垃圾,没有什么层次,因为这是本人第一个写得App,由于想学习嘛,所以没有用到什么框架,很多重复.冗余的代码,注释比较少, 望大家见谅,大神忽喷. 这里提示几点: 1.必须有网络才能打开app(无网络的本地数据保存与加载--就是进入界面的初始化数据,大家可以自己完善) 2.定位功能需要百度key 3