UI开发的点点滴滴 难控件的详解 第三章
最常用和最难用的控件 ListView
listView的用法:

在布局文件中对控件进行添加 ------------------------------------------------------------------------------------------ ArrayAdapter<String> adapter = new ArrayAdapter<String>(上下文,ListView子项布局id,要配置的数据)
ListView.setAdapter(adapter);将ListView显示出来
定制ListView的界面:
1.新建类:
public class Fruit{
private String name; private int imageId;
public Fruit(String name,int imageId){
this.name= name;this.imageId = imageId;}
get方法()
}
2.自定义布局文件:
新建布局,按照要求进行定位方式的美化
3.自定义适配器:一定要继承自ArrayAdapter,并且指定泛型为<新建的类名称>

FruitAdapter构造函数用于将上下文,子项布局id,以及数据传进来 ,将子项布局id改变为全局变量 -------------重写getView()这个方法在每个子项被滚动到屏幕内时调用 返回值为view
LayoutInflate.from(getContext).inflate(resourceId,parent,false)第三个参数表示只让在父布局中声明生效,但不为View添加父布局 (记住就好) getItem(position);获取实例
点击事件: 

ListView的缺点:运用技巧提升运行效率ListView性能变差 ,扩展性不好
更强大的滚动控件 RecycleView(可以实现横向滚动)
1.添加依赖库
布局中添加RecycleView控件 
修改完成后点击Syn Now --------------------------------------------------------------------------------------------- 宽高都设为match_parent占满屏幕 控件不是SDK内置控件,所以要写完整包名
2.为RecycleView准备适配器 新建类,让这个适配器继承自RecyclerView.Adapter泛型指定为<类名.ViewHolder> 其中ViewHolder是定义的内部类

1.首先定义内部类ViewHolder继承自RecycleView.ViewHolder 然后ViewHolder构造函数传入一个View参数,这个参数通常就是RecyclerView子项的最外层布局 就可获取布局中对的控件
2.FruitAdapter构造函数作用:将数据源变为全局变量 3. 重写它的三个方法 onCreateViewHolder创建ViewHolder实例 加载fruit_item布局 onBindViewHolder对RecycleView子项进行赋值
getItemCount() 告诉RecyclerView一共有多少子项 直接返回数据源长度
3.RecyclerView使用:

LinearLayoutManager新建线性布局对象 setLayoutManager指定布局方式
使用RecyclerView实现横向布局排列:

修改子项布局id的属性 ------------------------------------------------------------------------------------------------------- LinearLayoutManager.setOrientation()设置布局排列方式
瀑布流布局:
在MainActivity中代码修改

创建StaggeredGridLayoutManager实例,接受两个参数,第一参数指定布局列数,2参数布局排列方式
把水果名称随机进行遍历,保证各水果名字差距大,子项高度也不同
StringBuilder实例:单线程操作字符串缓冲区下操作大量数据
RecyclerView点击事件:
(需要我们自己去给子项具体的View添加事件监听)

fruitView是子项布局点击事件
浙公网安备 33010602011771号