第一步、GridView控件使用自然少不了在layout中添加一个布局文件如gridview.xml
第三步、布局都有了,但是界面上还没有数据,图像和图像下面的文字还没有呢!
在onCreate中装载布局,并初始化gridview的数据,在android中控件列表的数据往往需要用到适配器,那简单的代码实现应该如下:
在gridviewitem.xml中对应的是图片+文字,那么SimpleAdapter的构造函数中后两个参数即将对应的key转换成resource中的数据。
剩下的就是如何将data准备好,从第二个参数看,其中需要加入List<Map<String, ?>>的数据类型gridviewitems,如下:
List<Map<String, Object>> gridviewitems = new ArrayList<Map<String, Object>>();
每项数据添加如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<GridView android:id="@+id/gridview"
android:numColumns="3"
android:horizontalSpacing="10dp"
android:verticalSpacing="10dp"
android:gravity="center_horizontal"
android:layout_width="wrap_content"
android:layout_height="240dp">
</GridView>
<ImageView android:id="@+id/fullImageView"
android:layout_below="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="240dp"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:text="@string/hello_world"
android:contentDescription="@string/str_full_imageview" />
</RelativeLayout>
第二步、对GridView布局的元素单独再设置一个布局如gridviwitem.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<ImageView android:id="@+id/image_item"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/imageDescrip">
</ImageView>
<TextView android:id="@+id/text_item"
android:layout_below="@+id/image_item"
android:layout_centerHorizontal="true"
android:layout_height="wrap_content"
android:layout_width="wrap_content">
</TextView>
</RelativeLayout>
添加如上两个布局的意图是想在我们看到的界面中看到一个上方是GridView的控件,下方是ImageView的控件,而GridView控件中的每项元素由一个ImageView和一个TextView组成。
第三步、布局都有了,但是界面上还没有数据,图像和图像下面的文字还没有呢!
在onCreate中装载布局,并初始化gridview的数据,在android中控件列表的数据往往需要用到适配器,那简单的代码实现应该如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gridview);
GridView gridview = (GridView)findViewById(R.id.gridview);
......
SimpleAdapter adapter = new SimpleAdapter(this, gridviewitems, R.layout.gridviewitem,
new String[] {"imageview", "textview"}, new int[] {R.id.image_item, R.id.text_item});
gridview.setAdapter(adapter);
}
SimpleAdapter的构造函数原型为public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to)。
在gridviewitem.xml中对应的是图片+文字,那么SimpleAdapter的构造函数中后两个参数即将对应的key转换成resource中的数据。
剩下的就是如何将data准备好,从第二个参数看,其中需要加入List<Map<String, ?>>的数据类型gridviewitems,如下:
List<Map<String, Object>> gridviewitems = new ArrayList<Map<String, Object>>();
每项数据添加如下:
for (int i = 0; i < GRIDVIEW_COUNT; i++) {
Map<String, Object> item = new HashMap<String, Object>();
item.put("imageview", imageItems[i]);
item.put("textview", textItems[i]);
gridviewitems.add(item);
}
这样就基本完成GridView的实例了.