00:00
好,上一讲呢,我们把这个选择联系人啊,这个页面布局已经给处理完了,接下来呢,我就开始写这个联系人的适配器啊,将这个数据将它展示出来啊,好,我们开始写这个代码。还有这。首先呢,初始化一下数据in nit。啊。二加回车。初始化一下这个list view啊,初始化这个list view,首先呢,需要一个适配器,那我就用一个。Pick。Contest。TT。T啊。这里面呢,默认给他传一个上下文。好,目前呢,还没有这个适配器啊啊,先不用管LV。啊,This will.set adapter将这个示配器传进来。这样呢,就是这个初始化view。
01:04
List view。创建一下适配器CTRLC。在这个下。又一个。然后呢,让他继承base adapter out,加回车。实现一下四个方法。Out shift加S。生成一下构造。Contest。Contest。Private contest m。CONTEST。这个呢,是。选择。联系人的页面适配器。接收一下。等于contest。啊,这样呢,这个基本结构啊,就搭建完了。
02:01
啊,大家想这个适配器啊,要想展示数据,那么就一定得有数据啊,那大家看一下这个数据。啊,这个数据应该是什么呢。你是选择联系人,那么这里面的名称就是联系人的头像,也是联系人的,他是否选中啊这个状态。这里面呢,就多了这一个是否选中的状态啊,就跟你这个联系人有点区别,那怎么办呢,我再封装一个啊数据。将这个数据里呢,既包含你是否选中了啊,同时还包含你是联系人的所有信息。啊,这样呢,操作起来非常方便啊,否则的话你不这样去处理啊,不把这个t bos当成数据处理的话,后面会很麻烦的啊处理他的点击事件呢,啊和这个item的点击事件呢,这两个事件啊,处理起来非常非常麻烦。好。我们采用简单的方式处理。定义一个选择联系人的数据类。
03:03
T。Contest。啊,选择联系人金凤。这么一个类,这里面有哪些数据呢?啊,首先一定要有联系人的数据,那就是u in u。一定有个它同时呢,我再加一个字段加一个啊,是否选中的一个状态is track。ZCED啊,一直。首先这里是。联系人啊,这个呢,这个联系人是否被选中。的标记啊标记。这个是选择联系人。联系人的B类。我们生成一下它的方法。Out shift加S,先来一个构造。再来一个共产的。
04:04
再来一个盖的方法。好,这个B对象啊,已经创建完毕之后呢,我们再回到。这个页面啊。这个选择联系人页面啊,这次呢,我通过构造的方式向这个de中传递数据啊,传递数据,那么既然你这个页面中有联系人对吧?哎,那我本地数据库里是不是也有我存的所有的联系人信息啊,哎,这样呢我们就可以获取一下。从本地。数据库中。获取所有的联系人。信息啊,Model there get there。DB manager get。联系人的数据库表第二。Get。
05:00
All contest。所有的联系人信息都给它获取来out加回车。生成一下。这个集合。有了这个集合之后啊,他跟我想要的要的集合有什么区别呢。就差在这个地方加了一个是否选中的状态。那我怎么将它转换成这个集合呢?首先第一步先判断一下你获取的这个集合是否为空啊。它不等于空切这个联系人点size。大于等于零,那就说明本地数据库中有联系人信息。哎,我就可以进行转换了,接下来进行转换。啊,转换。转换之前我们已经做过转换啊,之前那个做过这样类似的啊,类似的转换,那很简单for循环。啊,优一份。
06:00
啊。TSD。皇太师。便利他。将它转换成什么呢?将转换成pick。PI。In for啊转换成这个,并对项里面传递两个参数,第一个参数就是联系人,第二个参数就是这个联系人是否被选中,默认呢,我都给它不选中啊,选择false。啊,循环一次就创建了这么一个对象,它俩之间转换了,那么我每一次每变了一次,就要循环产生一个对象,那么怎么将这个对象都封装在一起呢?另一个类啊,定一个集合list。啊。刚在和in符MP克斯。又一个。A。
07:02
好,拿到的这个对象之后。将你所有获取的啊PK这对象通通都封装起来。啊,将你得到的这个选择联系人的对象放在这里面啊就OK了,之后呢,将它。传递过来啊,通过构造的方式传递过来。因为呢,我这个一次传递就搞定了,因为这个联系人呢,在这个页面中啊,是暂时是不会发生任何变化了,所以说呢,只是通过构造的方式就传递过去就OK了啊,不需要那个刷新方法。好,既然传递过去之后,那这边你要进行进一步的处理。List。Pick啊,联系人,来一个皮克斯。既然传递过来了,那你这边就要准备去接收,再定一个list。Pick in four来一个集合M。
08:03
皮克斯。啊,这个数据又一个。A release。啊,及格。然后呢,将你传递过来的数据通通都保存到这里面,为了安全起见,我判断一下if皮克斯。不等于钠进p.size。大于等于零。然后这什么呢?我就MP点先清空一下,然后我再将这个数据保存起来,MP.i。啊,P。进来。啊,这个地方啊,有的同学说你这个地方没有必要校验啊,这是我这个编码风格啊,这个习惯啊,就是每一个类与上啊其他类进行数据的交换的时候,这个传进来的数据我都要进行安全校验啊,这样防止他那边的类出错了啊,会影响到我这边的结果,因为编代码的时候有可能是多人在开发啊,不只是你一个人在开发。
09:12
所以说呢,为了安全,我就多这么一步,也费不了多长时间,嗯。好,这是获取这个数据之后呢,我开始写下面的方法,拿到这个数据之后,第一个get count。它等于等于空。哎,那我就等于零。冒号。那点在。啊。好,这个get item,那就是MP点。Get position。接下来这个MP点。啊,直接position返回主导内容。接下来处理这个get view啊,大家还记得分几步吗?一共分四部。Private定义一个weholder。
10:01
VIEW。HOL。第一页啊,我们已经写过好多遍了啊,这回必须要会了。好,首先来一个beholder。Order等于。Now。然后if convert view等于等于now hold等于又一个获对象。啊,获得这项。然后呢,就开始获取这个布局啊convert view等于。Inflate第一个上下文I'm con。然后呢,加载一个布局2.layouta。第二。Atom。啊。然后呢,来一个闹。我们生成一下这个布局,Alt加回车。啊,这部剧。这一布局长啥样呢?哎,这一布局就长这样。
11:01
这就是他的布局。大家看一下,整体是一个水平线性布局,左侧一个check box,中间一个image view,右侧一个text view,啊,还是相对来说比较简单的。好,那这个高度呢,我改成包裹内容。水平方向。左侧一个check box。包裹内容,包裹内容啊。缩小一点。这样呢,就有了这个try boss啊之后呢,右侧一个image。啊,来一个50DP。50DP。我将这个头像啊,导入一下这个头像src。卓报下面的logo。啊,这样的图像就过来了啊,我要想把这个它居中啊,那怎么办呢?我把它高度变成match。
12:03
之后呢,Gravity。啊,这样呢,它就居中了之后呢。在右侧啊,再来一个。Test view。包括内容高度啊,来个match。我来一个名称。名称。字体呢,有点小test size。来一个20SP。让他居中,那就gravity。嗯,没有变下来。那这个改成包裹。这样就变过来了啊,变过来了好娜娜,我让他们之间啊,整体先有个距离,先来个PA定吧,PA丁来一个5DP。啊快点,然后呢,这两个距离有点近。
13:03
MU。Left。来一个10DP。啊,好一点。这个名称剧烈图片也来点距离。10DB。嗯,这样呢,就好一点了,嗯,好多了。接下来呢,哎,我来给他们复制这个ID啊,来一个ID。CB。啊。然后呢,是这个名称。ID。ID。TV。Pick啊,Pick。嗯,这个图标啊,我们这里就啊不对它进行修改了,因为我没有自己的服务器,没有来来存放这个图标的位置,所以说呢,这里我们暂时不去处理它。一共可以操作的就这么两个控件。CRCCR1。
14:00
回到这啊之后呢,给这个holder赋值。那么后端复制之前,我先要给他定一个变量啊private。三个Bo。啊,CB。Private。Test view。TV。啊。好,这回呢,来一个CB。它等于一定要拿着这个convert view去find view by ID啊,点find view by ID。a.ID点。CB。奥迪亚货车强转一下。Holder。TV。等于convert view.find view by。啊,点ID点。TV。因为什么呢?内选择的名称,奥加回撤之后呢,将这个hold进行保存。
15:02
Convert set tag。将后端传进来。Holder等于convert will.get。旋转一下。这是就是第一步啊。创建或获取。来注释一下吧。创建或。过去。Holder。O啊,OK,第二步呢,就是获取当前item数据。第三步。啊,显示数据。第四步,返回这个CONVERT6。好,第二步,获取当前item数据,那么你就拿到这个adapter的总的数据,拿它。
16:04
之后点get position。二加回车。拿到这个当前的数据之后呢,对它进行展示,那就是holder点。TV name set test。然后大家那个pick。方太in点儿。get.get。这是内搞定,接下来呢,就是这个吹吸力。They set track。哎,然后是PICK1份。都是从这个啊集合中啊,这个对象中去拿这个数据。There is text判断它是否啊选择选择了,好,我们运行一下看看效果怎么样。
我来说两句