gridview布局示例二(通过simpleAdapter进行图片等数据绑定)

http://blog.youkuaiyun.com/chenzheng_java/article/details/6199243

上面的是最终效果图,现在贴出文件结构

 

 

 

main.xml代码如下

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!-- 主界面本身就是一个GridView,用于显示night_layout.xml组件信息 -->  
  3. <GridView xmlns:android="http://schemas.android.com/apk/res/android"  
  4.     android:id="@+id/gridView"  
  5.     android:layout_width="fill_parent"  
  6.     android:layout_height="fill_parent"  
  7.     android:numColumns="auto_fit"  
  8.     android:horizontalSpacing="10dp"  
  9.     android:verticalSpacing="10dp"  
  10.     android:columnWidth="90dp"  
  11.     android:stretchMode="columnWidth"  
  12.     android:gravity="center"  
  13.     >  
  14.   
  15. </GridView>  

 

night_layout.xml

[xhtml]  view plain copy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!--  
  3.     该布局文件相当于建立了一个新的组件,这个组件主要包含一个图片以及一个描述性文本 
  4.  -->  
  5. <RelativeLayout  
  6.   xmlns:android="http://schemas.android.com/apk/res/android"  
  7.   android:layout_width="fill_parent"  
  8.   android:layout_height="wrap_content"  
  9.   android:paddingBottom="4dip"  
  10.   >  
  11.   <ImageView  
  12.     android:id="@+id/ItemImage"  
  13.     android:layout_width="wrap_content"  
  14.     android:layout_height="wrap_content"  
  15.     android:layout_centerHorizontal="true"  
  16.   ></ImageView>  
  17.   <TextView  
  18.     android:id="@+id/ItemText"  
  19.     android:layout_width="wrap_content"  
  20.     android:layout_height="wrap_content"  
  21.     android:layout_centerHorizontal="true"  
  22.     android:layout_below="@id/ItemImage"  
  23.     android:text="androidText1"  
  24.   />  
  25. </RelativeLayout>  

grid2.java

[java]  view plain copy
  1. package cn.com.android.grid;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.Map;  
  6. import java.util.Random;  
  7.   
  8. import android.app.Activity;  
  9. import android.os.Bundle;  
  10. import android.view.View;  
  11. import android.widget.AdapterView;  
  12. import android.widget.GridView;  
  13. import android.widget.SimpleAdapter;  
  14. import android.widget.Toast;  
  15. import android.widget.AdapterView.OnItemClickListener;  
  16.   
  17. public class grid2 extends Activity {  
  18.     @Override  
  19.     public void onCreate(Bundle savedInstanceState) {  
  20.         super.onCreate(savedInstanceState);  
  21.            
  22.         setContentView(R.layout.main);  
  23.         // 获取gridview对象  
  24.         GridView gridView = (GridView) findViewById(R.id.gridView);  
  25.         // 获取数据源  
  26.         ArrayList<HashMap<String, Object>> sourceList = getData(10);  
  27.         // 绑定数据源  
  28.         gridView.setAdapter(new SimpleAdapter(this, sourceList, R.layout.night_layout,  
  29.                 new String[]{"ItemImage","ItemText"}, new int[]{R.id.ItemImage,R.id.ItemText}));  
  30.         // 绑定事件触发  
  31.         gridView.setOnItemClickListener(new OnItemClickListener(){  
  32.   
  33.             public void onItemClick(AdapterView<?> parent, View view,  
  34.                     int position, long id) {  
  35.                 HashMap<String, Object> hashMap =  (HashMap<String, Object>) parent.getItemAtPosition(position);  
  36.                 Toast.makeText(grid2.this, hashMap.get("ItemText").toString(), Toast.LENGTH_SHORT).show();  
  37.                   
  38.             }  
  39.               
  40.               
  41.         });  
  42.           
  43.           
  44.           
  45.     }  
  46.     /** 
  47.      *创造数据源,数据源中存放的数据为hashmap对象,hashmap中存放着相应的图片id以及描述文本信息 
  48.      */  
  49.     private ArrayList<HashMap<String,Object>> getData(int number){  
  50.         ArrayList<HashMap<String,Object>> sourceList = new ArrayList<HashMap<String,Object>>();  
  51.         HashMap<String, Object> tempHashMap = new HashMap<String, Object>();  
  52.         for (int i = 0; i < number; i++) {  
  53.             tempHashMap.put("ItemImage", R.drawable.icon);  
  54.             tempHashMap.put("ItemText""图片"+i);  
  55.             sourceList.add(tempHashMap);  
  56.             tempHashMap = new HashMap<String, Object>();  
  57.         }  
  58.         return sourceList;  
  59.           
  60.           
  61.           
  62.     }  
  63. }  

作者废话:

 

由代码我们可以看得出,对于gridview相关的应用,我们一般需要一个2个布局文件,一个布局文件(如night_layout.xml)定义组件存放数据,而另一个组件(如main.xml)则作为容器存放组件。

对于我们来说,无非就是

第一步:写好组件和容器,即定义好布局文件

第二步:整理数据源。一般的方法都是提供一个方法,方法内部放着对数据的详细处理,方法返回整理好的数据源

第三步:将数据源绑定到组件。这里通过setAdapter()进行的

第四步:为组件创建各种事件监听,与用户进行交互。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值