00:00
好,接下来呢,我们来实现一下重环境服务器啊,拿到所有的群主信息之后,并将它啊展示出来啊,实现哪一步能具体就是这个页面,点击这个群主之后呢,将所有的群信息都在这个list view中进行展示啊。那么。首先看一下代码。来到这代码中啊,找到这个date这个方法啊,也就是group list activity这个页面,在这里面干什么呢?啊,从。短信服务器获取所有。群的相关信息。群的信息吧,啊信息。那么我定一个方法,Get groups。From。Server。创建一下奥特加飞车。啊,拿到这个方法,那既然去环境服务器啊,访问服务器,那就必须要有联网操作,第二。
01:05
嗯,格global点直行啊,又一个线程。去环形服务器调哪一个方法呢?嗯,调这个方法em collect.get.group manager啊,然后点什么呢。不是这个get or groups啊,是这一个get。Join groups from server,有这个方法,Out加回车踹一下有异常。二加回车返回一个M。M。斯啊,俄罗普斯,返回所有的群相关的信息,啊,你加入的群的相关信息,这是从网络获取的。完了。过去啊。
02:01
数据,那么网络数据发生变化,本地的数据库要不要发生变化呢?啊,这里呢啊,我们的数据库是没有发生变化,但是谁的数据库发生变化呢。哎,环信的SDK的数据库啊,大家分析一下啊,大家画一下这张图,首先呢,这个是我的APP。在这个APP中啊,我们是不是集成了环信的SDK啊SDK。这个SDK呢?它又被谁包含了呢?又被环信的EZ。啊,E。啊,UI。也就是我们倒了一个包啊,刚才我们执行的这一步,去环线服务器拿到所有的群相关信息啊,那么。也就是这面。换新服务器。你去访问他,哎,他就把所有的群的相关信息给你返回来了。返回到哪呢?哎,返回到它的SDK中。
03:03
啊,SDK中。那么。你就不需要再一次的进行访问网络了啊,因为我把这数据已经保存过来了。那么接下来。网络数据变化,我的本地数据库啊的EZ已经变了,接下来就是内存数据的变化啊,内存数据变化就需要你更新页面啊。那更新页面当前是直线程,我给它切换到主线程另一个。啊,先弹个吐司。是干什么的?加在。加载群信息成功,这是吐司,接下来呢,内存变化。啊,内存变化,内存变化就需要刷新这个适配器啊,给它传进数据,Out shift加F。把它变成全局的。
04:00
拿到这个适配器。然后呢,点。在什么呢?Refresh这个方法啊,Refre方法这里面呢,把你这个获取的数据的集合传递过来啊,你可以这样,然后呢,把它变成final这样也可以,还可以咋样呢?哎,还可以这样。List adapt点,同样是replace,然后呢,调什么呢,Em collect点。Get their g?Their group manager their get all groups。这个就是我刚才所说的,他从网络中拿到所有的群信息之后。他把它保存到了环信的SDK中了。啊,这个方法就是本地的,就不需要联网操作了。啊,这是这个过程,大家注意一下。刷新页面。
05:03
刷新。刷新呢,我可以给它抽成一个方法,Save加Q。加Q。啊,就他。然后呢,来一个refresh。这样呢,就定义了这么一个刷新的方法。啊,刷新。好。我们运行一下啊,看看效果怎么样。运行起来了,然后呢,来到联系人页面,点击群主。哎,看当前啊,就有两个群,一个是幺幺啊,一个是二二这个群。
06:00
啊,那这个是成功,那如果是失败呢?啊,别忘了这地方再来一个吐司run UI失败的啊,你有一个red宝。来一个TV,那就是加在。群信息失败啊失败。接下来我还要做什么事情呢?我要点击哎这个群群信息之后呢,就跳到这个群详情页面,也是这个效果。什么效果呢?我点击这个222这个群进来。之后呢,就会跳到到哎聊天的这个会话页面。那怎么实现呢?这里面需要注册一个监听。NITN。啊,一样。二加回。创建一下监听啊,这个就相当于啊list view。条目的点击事件。
07:02
Lv.set on item click啊,一个onemer。List view。点击世界啊,点击时间。我一点击这条目,就会跳转到会画详情页面,会画详情页面我们之前已经实现过了,那实现跳转也收益intend。就要传一个三角文啊,Group there。会话页面activity点。二加回车生成inent,启动跳转star X inent,那么需不需要传递参数?啊,很显然需要传递参数对吧?嗯,之前这个绘画页面中啊,这个绘画详情大家还是否记得有一个1TRY fragment啊,这里面呢,默认。
08:02
是需要你传一个ID,还有一个会话的类型,默认的是单聊,那本次呢,我们传的是啊群聊,那么你这个参数也要传递。我们回过来。回到这传记的参数,首先呢,传递一下绘画类型。啊,那就是群的intend.put。那么这个K是什么类型?啊,一定是is constant点。踹啊。保持你和。这里面的。这里面的谁呢?这儿。啊,它一模一样啊,必须是他的K。复制一下吧,防止错误啊,CTRLC。
09:02
啊,来到这之后呢,就是它它呢之后这个类型是什么类型呢?Is。点啊。聊天类型啊,群聊。这个传完之后,接下来要传群ID啊ID。那怎么传呢?intent.put。Is concerned there?ID。嗯。那这个ID怎么获取?大家看一下这里面传递过来参数啊,有当前的view啊有。啊,有了position,我是不是就可以获取到当前条目的数据啊?那当前条目的数据里面是不是就有它的环线ID啊,那怎么能获取到当前条目的这个数据呢?大家还记得我当前这个数据,这个展示这个数据来源于哪吗?它数据来源于这儿啊,往下看。
10:05
在刷新方法的时候,是不是就是有有个它呀。Em collect.get.get所有的群信息。哎,我拿到它。这就是拿到了总的数据。总的数据之后呢,点。Get position。我是不就拿到了。哎,当前item的数据了,这个position呢,我们得减一。为什么要减一呢?我们先把这个log啊,打印一下这个position。T。加一下position。好,一会儿再看。啊,获取到这个数据之后,耗加飞车就拿到了当前啊条目的数据。是em group拿它之后,哎,再想获取这个群ID,那就受益这了啊受益。
11:04
直接复制过来搞定。嗯,好的。那我们运行一下看看效果,同时把这个position打印出来。好运起来了之后,过来点击这个群主啊进来,然后我点击这个幺幺啊,看他打印出来是谁111。嗯,看一下。把它关掉。显示的几啊,看一下是不是显示的是一啊。那它应该是几啊,正常的,我们理解的话,这个历史不有第一个条目,不应该从零开始吗?对不对,哎,从零开始。但是呢,它显示个111啊,这是不对的,那我们再打。
12:01
他就崩溃了啊,但是呢,这个position显示出来是几啊,是000啊,这什么意思呢。哎,是这样的。我再运行一下。就是因为啊,你这个list view添加了一个头部局啊。添加这个头局啊,它默认这个头部局它是从零开始的啊,它从零,然后一二啊这么去排序的,那么这个零啊,我们这里能用吗?你想想这头部局里。他是不是没有这个对象啊,哎,没有这个em。入对象,那怎么办呢?我将这个position啊给它减一。啊,减一就OK了,同时呢,我们这里要进一步的可以校验一下,如果。等于等于零啊,我就直接return啊,返回掉,不让它做处理啊,好,我们再运行一下。
13:19
好,联系人。啊有点卡啊页面群主。啊,把这个刷新干掉。再点击一下111是不是进来了啊,然后再点击这个二二啊也可以进来,点击这个创建群主,它显示零是不是没有爆崩啊,哎,没有崩啊,没有崩。这样呢,这个功能就实现了。
我来说两句