乐读文学

Android从入门到精通

乐读文学 > 科普学习 > Android从入门到精通

第43页

书籍名:《Android从入门到精通》    作者:明日科技





android:layout_height="wrap_content"



android:layout_width="match_parent"



android:stretchMode="columnWidth"



android:numColumns="4"  >

(2)编写用于布局网格内容的XML布局文件items.xml。在该文件中,采用垂直线性布局管理器,并在该布局管理器中添加一个ImageView组件和一个TextView组件,分别用于显示网格视图中的图片和说明文字,具体代码如下:








xmlns:android="http://schemas.android/apk/res/android"



android:orientation="vertical"



android:layout_width="match_parent"



android:layout_height="match_parent">






android:id="@+id/image"



android:paddingLeft="10px"



android:scaleType="fitCenter"



android:layout_height="wrap_content"



android:layout_width="wrap_content"/>






android:layout_width="wrap_content"



android:layout_height="wrap_content"



android:padding="5px"



android:layout_gravity="center"



android:id="@+id/title"



/>





(3)在主活动的onCreate()方法中,首先获取布局文件中添加的ListView组件,然后创建两个用于保存图片id和说明文字的数组,并将这些图片id和说明文字添加到List集合中,再创建一个SimpleAdapter简单适配器,最后将该适配器与GridView相关联,具体代码如下:

GridView  gridview  =  (GridView)  findViewById(R.id.gridView1);  //获取GridView组件



int[]  imageId  =  new  int[]  {  R.drawable.img01,  R.drawable.img02,



R.drawable.img03,  R.drawable.img04,  R.drawable.img05,



R.drawable.img06,  R.drawable.img07,  R.drawable.img08,



R.drawable.img09,  R.drawable.img10,  R.drawable.img11,



R.drawable.img12,  };  //定义并初始化保存图片id的数组



String[]  title  =  new  String[]  {  "花开富贵",  "海天一色",  "日出",  "天路",  "一枝独秀","云",  "独占鳌头",  "蒲公英花",



"花团锦簇","争奇斗艳",  "和谐",  "林间小路"  };  //定义并初始化保存说明文字的数组



List>  listItems  =  new  ArrayList>();  //创建一个List集合



//通过for循环将图片id和列表项文字放到Map中,并添加到List集合中



for  (int  i  =  0;  i  <  imageId.length;  i++)  {



Map  map  =  new  HashMap();



map.put("image",  imageId[i]);



map.put("title",  title[i]);



listItems.add(map);  //将map对象添加到List集合中



}



SimpleAdapter  adapter  =  new  SimpleAdapter(this,



listItems,



R.layout.items,



new  String[]  {  "title",  "image"  },



new  int[]  {R.id.title,  R.id.image  }



);  //创建SimpleAdapter



gridview.setAdapter(adapter);  //将适配器与GridView关联

运行本实例,将显示如图4.8所示的运行结果。



图4.8 通过GridView显示的照片列表

如果只想在GridView中显示照片而不显示说明性文字,可以使用BaseAdapter基本适配器为其指定内容。使用BaseAdapter为GridView组件设置内容可以分为以下两个步骤。

(1)创建BaseAdapter类的对象,并重写其中的getView()、getItemId()、getItem()和getCount()方法,其中最主要的是重写getView()方法来设置显示图片的格式。以例4.7为例,将该实例中的GridView组件修改为使用BaseAdapter类设置内容的代码如下:

BaseAdapter  adapter=new  BaseAdapter()  {





@Override



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



ImageView  imageview;  //声明ImageView的对象



if(convertView==null){



imageview=new  ImageView(MainActivity.this);  //实例化ImageView的对象



imageview.setScaleType(ImageView.ScaleType.CENTER_INSIDE);  //设置缩放方式



imageview.setPadding(5,  0,  5,  0);  //设置ImageView的内边距



}else{



imageview=(ImageView)convertView;



}



imageview.setImageResource(imageId[position]);  //为ImageView设置要显示的图片



return  imageview;  //返回ImageView