Android--UI之GridView

來源:互聯網
上載者:User

標籤:slist   table   hashmap   網格   sel   oid   net   tools   子類   

前言

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

GridView

  GridView一個以二維網格的格式展示資料的控制項,它與ListView具有相同的繼承結構,同樣直接繼承與AbsListView,並且使用一個ListAdapter介面的適配器來綁定資料。其實它的展示效果有點類似於TableLayout布局,可以看看另外一篇部落格:Android--UI布局。相信有過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     <GridView13         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     <ImageView22         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     @Override27     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     @Override48     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         @Override57         public void onItemClick(AdapterView<?> parent, View view, int position,58                 long id) {59             // TODO Auto-generated method stub60             imageView.setImageResource(resIds[position]);61         }62     };63 64 }

  效果展示:

   源碼下載

  請支援原創,尊重原創,轉載請註明出處。謝謝。

Android--UI之GridView

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.