Android ApiDemos示例解析(121):Views->Grid->1. Icon Grid

前面介绍过的ListView, Gallery ,Spinner 等都是AdapterView 的子类,本例GridView 也是AdapterView的子类。AdapterView的显示可以通过数据绑定来实现,数据源可以是数组或是数据库记录,数据源和AdapterView是通过Adapter作为桥梁。通过Adapter,AdatperView可以显示数据源或处理用户选取事件,如:选择列表中某项。

所有AdapterView的数据源都是使用Adapter 作为桥梁, 不同的AdapterView,只是显示数据源的方式不同,ListView 以列表显示显示,Gallery以横向画廊方式,GridView则以二维网格的方式显示,缺省GridView根据所显示的View大小自动计算出每列的个数,也可以通过GridView的setNumColumns(int numColumns)指定列数,或是setColumnWidth(int columnWidth)指定列宽。

本例使用AppsAdapter 读取App Launcher 中所有应用的图标。Adapter的getView 返回一ImageView:

public View getView(int position, View convertView,
 ViewGroup parent) {
 ImageView i;

 if (convertView == null) {
 i = new ImageView(Grid1.this);
 i.setScaleType(ImageView.ScaleType.FIT_CENTER);
 i.setLayoutParams(new GridView.LayoutParams(50, 50));
 } else {
 i = (ImageView) convertView;
 }

 ResolveInfo info = mApps.get(position);
 i.setImageDrawable(info.activityInfo.loadIcon(getPackageManager()));

 return i;
}

Adapter可以返回任意类型的View,比如Button,TextView等,GridView或根据Adapter的getView返回的view 来显示每一项。

同样使用setAdapter 为GridView设置数据源。

setContentView(R.layout.grid_1);
mGrid = (GridView) findViewById(R.id.myGrid);
mGrid.setAdapter(new AppsAdapter());

本例如果将GridView 改成ListView ,应用图标将以列表显示。ListView 和GridView使用同一数据源,不同的只是表现形式(列表或是网格)。这样可以看到对应同一数据源,Android可以支持的表现形式非常多样化。



 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值