1 准备布局
一个list_item.xml布局,一个包含list_item.xml的list_view.xml。例:
girl_item.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
list_view.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
2 自定义适配器
确定数据源类型。例如少女类Girl:
Girl.java
1 | public class Girl { |
使用系统提供适配器或自定义适配器类Adapter,类ViewHolder根据需要定义为内部类或外部类,ConvertView,ViewHolder缓存优化。例GirlAdapter:
GirlAdapter.java
1 | public class GirlAdapter extends ArrayAdapter { |
3 加载布局
调用类,对应布局list_view.xml;获取数据源传入Adapter中,Adapter类对应list_item.xml。
MainActivity.java
1 | public class MainActivity extends AppCompatActivity { |
4 插入 & 删除 & 局部刷新Item
局部更新找到对应更新的item项,如果整个item的子控件都需要更新,调用getView;只需更新某个子控件,可通过findViewById()找出对应控件,进行更新。
先重写list_view.xml布局,重写MainActivity.java模仿数据更新。
list_view.xml
1 | <?xml version="1.0" encoding="utf-8"?> |
MainActivity
1 | public class MainActivity extends AppCompatActivity { |
布局的优化,将item的高度设为定值可以减少getView()调用次数。