从 iOS 的 TableView 突然转到 Android 的 ListView, 说实话,很恶心。各种不方便,不要问我为什么学 Android,我也不想,唉,牢骚归牢骚,既然学了,就得学到点什么,不然既浪费时间,又什么都没得到,太亏了。记录一下学习的历程。
在使用 ListView 的时候,大部分我们都会自定义 item,iOS 也一样,会自定义 cell。不然使用系统为我们提供的几种格式是满足不了我们的各式各样的需求的。
废话到此为止。
1.先在 xml 文件中布局:
1 | <ListView |
2.创建模型文件
相当于 iOS 中的 model 文件,每写一个东西,就得去 iOS 中找对应的东西,这属于思维固化了。慢慢改正,不过这样能方便快速的理解这些东西。
1 | public class Teacher { |
相比较而言,Android 的模型文件真的很麻烦,定义一个属性,就得写它的 getter 和 setter 方法。也许有其他的办法,只是我还不知道。
3.创建Adapter
这个适配器,在我的理解中就相当于 iOS 中的自定义 cell 了,比 iOS 方便的是,iOS 的那些数据源方法都在这里实现。一般的话,自定义的 adapter 会继承于 BaseAdapter
。
1.实现数据源方法
1 |
|
2.创建一个构造方法
这里是举例说明:
1 | public TeacherAdapter(ArrayList<Teacher> mList, Context mContext) { |
4.给 item 布局
创建一个 item 的 xml 文件,每一个 item 的布局都在这个文件中进行。
1 | <ImageView |
这里我给每个 item 上定义了两个控件,一个 TextView,一个 ImageView。是线性布局。
5.给控件赋值
接下来再回到 adapter 文件中的 getView 方法中,在这个方法中为控件赋值。
1 |
|
6.设置数据源
接下来回到 Activity 文件中,获取 listView 对象:
1 | //因为这里是本地数据,所以将 listView 设置为了局部变量,本地数据也不需要在开启线程去刷新UI |
到这里,一个完整的自定义 item 的 ListView 算是完成了。但是在实际开发中,大部分的应用场景都是从网络端获取数据,然后给 ListView 赋值。这个等我学到网络的时候再来介绍一下。
如有不对之处,请多多指正!达者为师,谢谢!