Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android應用開發入門(三十)UI控件GridView的使用

Android應用開發入門(三十)UI控件GridView的使用

編輯:Android開發實例

前言

  這篇文章介紹一下Android平台下,GridView控件的開發。針對GridView控件的一些常用屬性、方法,以及注意事項進行講解,最後將以一個Demo展示GridView控件的使用。

GridView

  GridView一個以二維網格的格式展示數據的控件,它與ListView具有相同的繼承結構,同樣直接繼承與AbsListView,並且使用一個ListAdapter接口的適配器來綁定數據。其實它的展示效果有點類似於TableLayout布局,可以看看另外一篇 http://www.fengfly.com/plus/view-213369-1.html。相信有過UI編程經驗的人,都對GridView這個控件不會陌生。

  GridView效果圖:

  對於GridView而言,有一些特定的屬性需要了解一下,Android也為這些屬性提供了對應的getter/setter方法:

  • android:columnWidth:指定每一列的固定寬度。
  • android:gravity:指定每個填充項的填充方向。
  • android:horizontalSpacing:指定水平行之間的間距。
  • android:verticalSpacing:指定垂直列之間的間距。
  • android:numColumns:指定列數。

   對於android:numColumns屬性而言,如果設定為1,可以當成一個ListView使用。而GridView的方法與事件,大部分和ListView類似,可以參見另外一篇講解ListView,這裡不再詳解了。

 數據填充

  GridView和ListView一樣,都需要通過一個ListAdapter的適配器來填充數據。對於復雜的數據,一般會使用選擇繼承BaseAdapter。對於一些簡單的數據樣式,通過XML布局展示的,可以使用SimpleAdapter。它們都是比較常用的ListAdapter子類。

  下面通過一個Demo簡單講解一下GridView的使用。

  布局代碼:

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
  2.     xmlns:tools="http://schemas.android.com/tools" 
  3.     android:layout_width="match_parent" 
  4.     android:layout_height="match_parent" 
  5.     android:orientation="vertical" 
  6.     android:paddingBottom="@dimen/activity_vertical_margin" 
  7.     android:paddingLeft="@dimen/activity_horizontal_margin" 
  8.     android:paddingRight="@dimen/activity_horizontal_margin" 
  9.     android:paddingTop="@dimen/activity_vertical_margin" 
  10.     tools:context=".MainActivity" > 
  11.  
  12.     <GridView 
  13.         android:id="@+id/gridview" 
  14.         android:layout_width="match_parent" 
  15.         android:layout_height="wrap_content" 
  16.         android:horizontalSpacing="6dp" 
  17.         android:numColumns="3"          
  18.         android:padding="20dp" 
  19.         android:verticalSpacing="6dp" /> 
  20.  
  21.     <ImageView 
  22.         android:id="@+id/iamgeview" 
  23.         android:layout_width="match_parent" 
  24.         android:layout_height="150dp" /> 
  25.  
  26. </LinearLayout> 

  實現代碼:

  1. package com.bgxt.gridviewdemo;  
  2.  
  3. import java.util.ArrayList;  
  4. import java.util.HashMap;  
  5. import java.util.List;  
  6. import java.util.Map;  
  7.  
  8. import android.os.Bundle;  
  9. import android.app.Activity;  
  10. import android.view.Menu;  
  11. import android.view.View;  
  12. import android.widget.AdapterView;  
  13. import android.widget.GridView;  
  14. import android.widget.ImageView;  
  15. import android.widget.SimpleAdapter;  
  16. import android.widget.AdapterView.OnItemClickListener;  
  17. import android.widget.AdapterView.OnItemSelectedListener;  
  18.  
  19. public class MainActivity extends Activity {  
  20.  
  21.     private ImageView imageView;  
  22.     private int[] resIds = new int[] { R.drawable.bmp1, R.drawable.bmp2,  
  23.             R.drawable.bmp3, R.drawable.bmp4, R.drawable.bmp5, R.drawable.bmp6,  
  24.             R.drawable.bmp7, R.drawable.bmp8, R.drawable.bmp9, R.drawable.bmp10 };  
  25.  
  26.     @Override 
  27.     protected void onCreate(Bundle savedInstanceState) {  
  28.         super.onCreate(savedInstanceState);  
  29.         setContentView(R.layout.activity_main);  
  30.         GridView gridView = (GridView) findViewById(R.id.gridview);  
  31.         imageView = (ImageView) findViewById(R.id.iamgeview);  
  32.         List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();  
  33.         for (int i = 0; i < resIds.length; i++) {  
  34.             Map<String, Object> cell = new HashMap<String, Object>();  
  35.             cell.put("imageview", resIds[i]);  
  36.             list.add(cell);  
  37.         }  
  38.  
  39.         SimpleAdapter simpleAdapter = new SimpleAdapter(MainActivity.this,  
  40.                 list, R.layout.cell, new String[] { "imageview" },  
  41.                 new int[] { R.id.ivCell });  
  42.         gridView.setAdapter(simpleAdapter);  
  43.         gridView.setOnItemClickListener(itemClick);  
  44.         imageView.setImageResource(resIds[0]);  
  45.     }  
  46.  
  47.     @Override 
  48.     public boolean onCreateOptionsMenu(Menu menu) {  
  49.         // Inflate the menu; this adds items to the action bar if it is present.  
  50.         getMenuInflater().inflate(R.menu.main, menu);  
  51.         return true;  
  52.     }  
  53.  
  54.     private OnItemClickListener itemClick = new OnItemClickListener() {  
  55.  
  56.         @Override 
  57.         public void onItemClick(AdapterView<?> parent, View view, int position,  
  58.                 long id) {  
  59.             // TODO Auto-generated method stub  
  60.             imageView.setImageResource(resIds[position]);  
  61.         }  
  62.     };  
  63.  

 效果展示:

   源碼下載

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved