GridView是一个ViewGroup,显示项目在一个二维的,可滚动的网格。网格项目会自动插入到使用ListAdapter布局。说白了就是一个平铺的照片缩略图界面。
在本教程中,您将创建一个网格图像的缩略图。当选择一个项时,将显示一个Toast消息的位置的图像。
1、创建一个新项目,以HelloGridView命名(随意)。
2、找到一些你想使用的照片,或下载一些示例图像。保存图像文件到项目的res/drawable/目录。
3、打开res /layout/main.xml文件,插入下面的内容。
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:gravity="center"
android:horizontalSpacing="10dp"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="10dp"
/>
GridView填满整个屏幕。这个有自解释的属性(这句是直接翻译出来,具体起啥作用还真没仔细研究)。
4、打开HelloGridView.java把下面的代码插入到onCreat()方法中
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
Toast.makeText(MainActivity.this, "" + position,
Toast.LENGTH_SHORT).show();
}
});
在main.xml布局设置内容的视图时,GridView是通过findViewById(int)获取的。这个setAdapter()方法然后设置一个自定义适配器(ImageAdapter) 被显示在网格中所有项目的源。这个ImageAdapter是在下一步创建。
这个有点类似前面那个画廊( Gallery)。5、创建一个集成于BaseAdpater的类ImageAdapte,代码如下
publicclass ImageAdapter extends BaseAdapter implements ListAdapter{
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
publicint getCount() {
returnmThumbIds.length;
}
public Object getItem(int position) {
returnnull;
}
publiclong getItemId(int position) {
return 0;
}
public View getView(int position, View convertView, ViewGroupparent) {
ImageView imageView;
if (convertView == null) {
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
private Integer[] mThumbIds = { R.drawable.p41, R.drawable.p42,
R.drawable.p43, R.drawable.p44, R.drawable.p47, R.drawable.p41,
R.drawable.p42, R.drawable.p43, R.drawable.p44, R.drawable.p47,
R.drawable.p41, R.drawable.p42, R.drawable.p43, R.drawable.p44,
R.drawable.p47 };
}
判断参数convertView(View)是否为空,如果为空,那就初始化新的imageView,否则,就将convertView赋值给imageView。在imageView被实例化后,执行setImageResource方法,添加图片内容。
最后声明了数组,用来从drawable文件夹中提取我们放进去的素材图片(其他内部执行的过程,可以参阅android源代码)。