欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android網(wǎng)格視圖GridView的使用

 更新時間:2016年01月19日 15:31:44   作者:依舊淡然  
網(wǎng)格視圖GridView的排列方式與矩陣類似,當(dāng)屏幕上有很多元素(文字、圖片或其他元素)需要按矩陣格式進行顯示時,就可以使用GridView控件來實現(xiàn)

GridView(網(wǎng)格視圖)是按照行列的方式來顯示內(nèi)容的,一般用于顯示圖片,圖片等內(nèi)容,比如實現(xiàn)九宮格圖,用GridView是首選,也是最簡單的。主要用于設(shè)置Adapter。

網(wǎng)格視圖GridView的排列方式與矩陣類似,當(dāng)屏幕上有很多元素(文字、圖片或其他元素)需要按矩陣格式進行顯示時,就可以使用GridView控件來實現(xiàn)。

GridView常用的XML屬性:


  本文將以一個具體的實例來說明如何使用GridView控件實現(xiàn)手機屏幕上各個應(yīng)用軟件圖標(biāo)的擺放,以及應(yīng)用軟件名稱的顯示。

  完成后的程序運行效果如圖1所示。

圖1 主界面顯示效果

1.界面布局

  通過查看GridView的API幫助文檔(http://developer.android.com/reference/android/widget/GridView.html),可以了解到GridView的常用xml屬性如圖2所示。

  其中,android:columnWidth[int]用于設(shè)置每列的寬度;android:gravity[int]用于設(shè)置每個網(wǎng)格的比重;android:horizontalSpacing[int]用于設(shè)置網(wǎng)格之間列的默認(rèn)水平距離;android:numColumn[int]用于設(shè)置列數(shù);android:stretchMode[int]用于設(shè)置列應(yīng)該以何種方式填充可用空間;android:verticalSpacing[int]用于設(shè)置網(wǎng)格之間行的默認(rèn)垂直距離。

  了解了上述的GridView常用xml屬性之后,我們就可以完成對主界面的xml布局文件編寫了。在xml布局文件中,我們使用LinearLayout對整個界面進行垂直布局,然后在該布局中添加一個GridView控件即可。具體的xml布局文件源碼如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools"
   android:orientation="vertical"
   android:layout_width="match_parent"
   android:layout_height="match_parent" >
   <GridView 
   android:id="@+id/gridView"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:numColumns=""
   android:horizontalSpacing="dp"
   android:verticalSpacing="dp">
   </GridView>
  </LinearLayout> 

  在GridView控件中,我們通過android:numColumns="4"指定了網(wǎng)格的列數(shù)為4;通過android:horizontalSpacing="10dp"和android:verticalSpacing="10dp"指定了網(wǎng)格之間的水平距離和垂直距離都為10dp。

2.網(wǎng)格元素布局

  如圖1所示,在每個網(wǎng)格內(nèi),我們都需要顯示兩項內(nèi)容:應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱。因此,我們還需要對網(wǎng)格內(nèi)元素進行相應(yīng)的布局。

  我們可以在項目工程的layout目錄下新建一個名為“griditeminfo.xml”的xml布局文件,完成對網(wǎng)格內(nèi)元素的布局。在該xml布局文件中,我們使用相對布局RelativeLayout對網(wǎng)格內(nèi)的元素進行排列,將一個ImageView控件以水平居中的形式放置在網(wǎng)格內(nèi)(上方),用來顯示應(yīng)用程序的圖標(biāo);將一個TextView控件以水平居中的形式放置在網(wǎng)格內(nèi)(下方),用來顯示應(yīng)用程序的名稱。具體的griditeminfo.xml源碼如下:

<?xml version="." encoding="utf-"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content" >  
   <ImageView
   android:id="@+id/itemImage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" >
   </ImageView>
   <TextView
   android:id="@+id/itemName"
   android:layout_below="@+id/itemImage"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true" >
   </TextView>
  </RelativeLayout> 

3.資源儲存

  在該實例中,我們需要對眾多的應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱進行儲存。很顯然,應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱之間存在著一一對應(yīng)的關(guān)系,我們可以使用HashMap分別對應(yīng)用軟件圖標(biāo)以及應(yīng)用軟件名稱進行存儲,然后再將HashMap添加到ArrayList中,便可以完成資源的儲存了。具體實現(xiàn)方法如下:

//將圖標(biāo)圖片和圖標(biāo)名稱存入ArrayList中
  //Author:博客園-依舊淡然
  ArrayList<HashMap<String, Object>> item = new ArrayList<HashMap<String, Object>>();
  for (int i = ; i < resIds.length; i++) {
   HashMap<String, Object> map = new HashMap<String, Object>();
   map.put("itemImage", resIds[i]);
   map.put("itemName", name[i]);
   item.add(map);
  }

  其中,數(shù)組resIds[]儲存著應(yīng)用軟件圖標(biāo)的資源id;數(shù)組name[]儲存著應(yīng)用軟件名稱,并通過for循環(huán)遍歷語句將其存入了HashMap中。

4.簡單適配器SimpleAdapter

  簡單適配器SimpleAdapter繼承自BaseAdapter,用于將靜態(tài)數(shù)據(jù)映射到xml文件中定義好的視圖當(dāng)中。比如可以指定靜態(tài)數(shù)據(jù)為由Map組成的ArrayList。在ArrayList中每個條目對應(yīng)List中的一行,Map可以包含多項數(shù)據(jù)。

  SimpleAdapter的構(gòu)造方法如下:

public SimpleAdapter (Context context, List<? extends Map<String, ?>> data, int resource, String[] from, int[] to); 

  其中,參數(shù)context用于指定SimpleAdapter所關(guān)聯(lián)的上下文對象;參數(shù)data用于指定Map列表;參數(shù)resource用于指定資源標(biāo)識符(即列表項的視圖布局);參數(shù)from用于指定Map列表中每項數(shù)據(jù)所對應(yīng)的標(biāo)簽;參數(shù)to用于指定Map列表中每項數(shù)據(jù)在布局文件中所要匹配的對象。

  在該實例中,實現(xiàn)SimpleAdapter的構(gòu)造方法如下所示:

 //SimpleAdapter對象,匹配ArrayList中的元素
  //Author : 依舊淡然
  SimpleAdapter simpleAdapter = new SimpleAdapter
  (this, item, R.layout.griditeminfo, new String[] {"itemImage","itemName"},
   new int[] {R.id.itemImage,R.id.itemName}) {
  }; 

  實現(xiàn)了簡單適配器SimpleAdapter之后,我們還需要將該簡單適配器SimpleAdapter添加到GridView對象當(dāng)中去,可以通過如下方法實現(xiàn):

mGridView.setAdapter(simpleAdapter);

5.事件監(jiān)聽

  在實際的應(yīng)用當(dāng)中,我們需要對用戶的操作進行監(jiān)聽,即需要知道用戶選擇了哪一個應(yīng)用軟件。

  在網(wǎng)格控件GridView中,常用的事件監(jiān)聽器有兩個:OnItemSelectedListener和OnItemClickListener。其中,OnItemSelectedListener用于項目選擇事件監(jiān)聽,OnItemClickListener用于項目點擊事件監(jiān)聽。

  要實現(xiàn)這兩個事件監(jiān)聽很簡單,繼承OnItemSelectedListener和OnItemClickListener接口,并實現(xiàn)其抽象方法即可。其中,需要實現(xiàn)的OnItemClickListener接口的抽象方法如下:

public void onItemClick(AdapterView<?> parent, View view, int position, long id);

  需要實現(xiàn)的OnItemSelectedListener接口的抽象方法有兩個,分別如下:

  public void onItemSelected(AdapterView<?> parent, View view, int position, long id);
  public void onNothingSelected(AdapterView<?> parent);

相關(guān)文章

最新評論