http://blog.youkuaiyun.com/chenzheng_java/article/details/6199243
上面的是最终效果图,现在贴出文件结构
main.xml代码如下
- <?xml version="1.0" encoding="utf-8"?>
- <!-- 主界面本身就是一个GridView,用于显示night_layout.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:numColumns="auto_fit"
- android:horizontalSpacing="10dp"
- android:verticalSpacing="10dp"
- android:columnWidth="90dp"
- android:stretchMode="columnWidth"
- android:gravity="center"
- >
- </GridView>
night_layout.xml
- <?xml version="1.0" encoding="utf-8"?>
- <!--
- 该布局文件相当于建立了一个新的组件,这个组件主要包含一个图片以及一个描述性文本
- -->
- <RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:paddingBottom="4dip"
- >
- <ImageView
- android:id="@+id/ItemImage"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- ></ImageView>
- <TextView
- android:id="@+id/ItemText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerHorizontal="true"
- android:layout_below="@id/ItemImage"
- android:text="androidText1"
- />
- </RelativeLayout>
grid2.java
- package cn.com.android.grid;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.Random;
- import android.app.Activity;
- import android.os.Bundle;
- import android.view.View;
- import android.widget.AdapterView;
- import android.widget.GridView;
- import android.widget.SimpleAdapter;
- import android.widget.Toast;
- import android.widget.AdapterView.OnItemClickListener;
- public class grid2 extends Activity {
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- // 获取gridview对象
- GridView gridView = (GridView) findViewById(R.id.gridView);
- // 获取数据源
- ArrayList<HashMap<String, Object>> sourceList = getData(10);
- // 绑定数据源
- gridView.setAdapter(new SimpleAdapter(this, sourceList, R.layout.night_layout,
- new String[]{"ItemImage","ItemText"}, new int[]{R.id.ItemImage,R.id.ItemText}));
- // 绑定事件触发
- gridView.setOnItemClickListener(new OnItemClickListener(){
- public void onItemClick(AdapterView<?> parent, View view,
- int position, long id) {
- HashMap<String, Object> hashMap = (HashMap<String, Object>) parent.getItemAtPosition(position);
- Toast.makeText(grid2.this, hashMap.get("ItemText").toString(), Toast.LENGTH_SHORT).show();
- }
- });
- }
- /**
- *创造数据源,数据源中存放的数据为hashmap对象,hashmap中存放着相应的图片id以及描述文本信息
- */
- private ArrayList<HashMap<String,Object>> getData(int number){
- ArrayList<HashMap<String,Object>> sourceList = new ArrayList<HashMap<String,Object>>();
- HashMap<String, Object> tempHashMap = new HashMap<String, Object>();
- for (int i = 0; i < number; i++) {
- tempHashMap.put("ItemImage", R.drawable.icon);
- tempHashMap.put("ItemText", "图片"+i);
- sourceList.add(tempHashMap);
- tempHashMap = new HashMap<String, Object>();
- }
- return sourceList;
- }
- }
作者废话:
由代码我们可以看得出,对于gridview相关的应用,我们一般需要一个2个布局文件,一个布局文件(如night_layout.xml)定义组件存放数据,而另一个组件(如main.xml)则作为容器存放组件。
对于我们来说,无非就是
第一步:写好组件和容器,即定义好布局文件
第二步:整理数据源。一般的方法都是提供一个方法,方法内部放着对数据的详细处理,方法返回整理好的数据源
第三步:将数据源绑定到组件。这里通过setAdapter()进行的
第四步:为组件创建各种事件监听,与用户进行交互。