2020/11/5 下午完成该课程第二个实验报告。
Android Studio微信页面提交
需要完成以下要求:(在一的基础上完成内容的增加和功能的更新)
- 增加布局(纵向布局,横向布局,网格布局),随意在哪一个界面上增加即可
- 增加内容,有点击,分组,悬浮等内容。
上述内容通过recyclerview完成,
参考网址,点击跳转
1.在什么位置放置布局
首先我们思考一个问题,在我们第一次的实验中,我们我们只通过MainActivity调fragment,fragment调layout文件来实现四个页面之间的切换。然后我们首先要在逻辑层明白,我们要增加布局就是在fragment增加,而不是在MainActivity里,我们的MainActivity只是我们的主菜单,只是起调用的作业,而显示是fragment控制,所以增加布局是增加在fragment里,首先这一点要明确。
2.放置布局需要什么
在之前的课上我们就知道了,要一个适配器adapter,通过这个来控制,首先来回顾上课所讲的一个比较简单的例子。
课上代码,点击跳转
我们首先我们思考布局文件,先不要考虑逻辑上的问题,既然是一个recyclerview,所以先要在布局文件中放入recyclerview,在其中我们是要放入TextView,所以需要另外一个item的layout文件,所需要的准备我们就准备好了。然后我们决定放什么在这个里面,我们将里面要放的数据存储在列表或数组中,然后再使用adapter的时候将数据放入即可。
3.开始写“MainActivity”
注意这个时候我指的布置MainActivity文件而是下面的fragment文件,是什么原因,在第一条我就说了。在原本的代码基础上进行增加就可以了,不需要进行新建文件,上面说过,先要放入数据,所以就对数据进行处理,既可以直接写代码,也可以写无返回值的函数,目的就是放入数据,后面可以进行传值。
然后就是新建一个继承于adapter的类(后面统一简称为“adapter类”),我们先新建一个即可,需要什么函数写上即可,先做一个空的文件,方便fragment里的函数方便实现。首先是实现实例化adapter的函数(既可以写函数,也可以只在oncreateview函数中直接写),既然需要这个adapter类,所以肯定需要给他new一个对象,然后这个adapter是用于recyclerview(后面简称re),所以这个对象也需要实例化,然后我们将之前layout文件里的re给实例化,然后re需要一个manager,所以将manager实例化就好,然后通过re所具有的函数创给他就好,传参的时候我们可以再传入一个参数,然后将其改变成为网格布局也可以,这个已不是很麻烦,修改继承的类就可以,然后也将adapter传给他就好,最后有一点比较重要就是如何传数据(我们所要显示的数据),这在adapter里写一个传入数组或列表的函数即可。然后我们的“MainActivity”里的内容就写好了。
4.adapter类的完成
我们再上一条有一个adapter的类是空的,我们需要将其补充完整,首先,构造函数和传入数据的函数,其一些私有成员可以自行建立。然后就是一些所需要重载的函数。下面我们将重载的函数进行完成,然后根据函数名进行函数的完成,首先是getItemCount函数,这个是返回item的长度,所以我们返回列表差长度即可,然后我们就是onCreateViewHolder,既然是create那么我们就需要进行创建,然后根据提示需要新建一个类,然后根据报错一个一个来就好了,然后这个我们是采用这个函数进行对layout文件各个控件的进行实例化和控制,就和我在一中所说的,我们不能控制layout文件里的控件,只能通过实例化后再进行改变,然后就是通过ViewHolder将这些控件的实例化对象传递,然后我们在这个函数中返回这个类型的实例化对象,这样就可以进行传值,传值的格式固定,参数可以进行修改,这个函数的目的就是传入控件的实例化对象,然后再另外一个函数(onBindViewHolder)中对这个控件进行操作,设置内容和点击等。
这是一个基本的思路,我们我们写布局的过程和逻辑就是这样的,其他的内容(底部悬浮等)我们需要其他文件的写入和其他类的加入。