201204041534Android教學之Grid view基礎三

文章來源~
http://blog.csdn.net/hellogv/article/details/4567095

GridView跟ListView都是比較常用的多控件佈局,而GridView更是實現九宮圖的首選!本文就是介紹如何使用GridView實現九宮圖。GridView的用法很多,網上介紹最多的方法就是自己實現一個ImageAdapter繼承BaseAdapter,再供GridView使用
结果:
 1


 

main.xml源代碼如下,本身是個GirdView,用於裝載Item:


    android:id="@+id/gridview" 
    android:layout  
    android:layout  
    android:numColumns="auto_fit" 
    android:verticalSpacing="10dp" 
    android:horizontalSpacing="10dp" 
    android:columnWidth="90dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" 
/>

介紹一下裏面的某些屬性:

android:numColumns="auto_fit" ,GridView的列數設置爲自動

android:columnWidth="90dp",每列的寬度,也就是Item的寬度
android:stretchMode="columnWidth",縮放與列寬大小同步
android:verticalSpacing="10dp",兩行之間的邊距,如:行一(NO.0~NO.2)與行二(NO.3~NO.5)間距爲10dp
android:horizontalSpacing="10dp",兩列之間的邊距。

接下來介紹night_item.xml,這個XML跟前面ListView的ImageItem.xml很類似:



xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout  
android:paddingBottom="4dip" android:layout> 

   android:layout  
   android:id="@+id/ItemImage"  
   android:layout  
   android:layout_centerHorizontal="true">  
 

   android:layout  
   android:layout_below="@+id/ItemImage"  
   android:layout  
   android:text="TextView01"  
   android:layout_centerHorizontal="true"  
   android:id="@+id/ItemText"> 
 

最後就是JAVA的源代碼了,也跟前面的ListView的JAVA源代碼很類似,不過多了“選中”的事件處理:

public class mainActivity extends Activity {
   
    @Override
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    GridView gridview = (GridView) findViewById(R.id.gridview); 
 
    //生成動態數組,並且轉入數據  
    ArrayList > lstImageItem =     new ArrayList >();   
    HashMap map1 = new HashMap ();
        map1.put("ItemImage", R.drawable.png_icon_001);
        map1.put("ItemText", "設定");
       lstImageItem.add(map1);
        HashMap map2 = new HashMap ();
        map2.put("ItemImage", R.drawable.png_icon_009);
        map2.put("ItemText", "新增");
       lstImageItem.add(map2);
        HashMap map3 = new HashMap ();
        map3.put("ItemImage", R.drawable.png_icon_010);
        map3.put("ItemText", "刪除");
       lstImageItem.add(map3);
        HashMap map4 = new HashMap ();
        map4.put("ItemImage", R.drawable.png_icon_088);
        map4.put("ItemText", "修改");
       lstImageItem.add(map4);
        HashMap map5 = new HashMap ();
        map5.put("ItemImage", R.drawable.png_icon_027);
        map5.put("ItemText", "更新");
       lstImageItem.add(map5); 
        HashMap map6 = new HashMap ();
        map6.put("ItemImage", R.drawable.png_icon_068);
        map6.put("ItemText", "合併");
       lstImageItem.add(map6);
        HashMap map7 = new HashMap ();
        map7.put("ItemImage", R.drawable.png_icon_102);
        map7.put("ItemText", "裁剪");
       lstImageItem.add(map7); 
        HashMap map8 = new HashMap ();
        map8.put("ItemImage", R.drawable.png_icon_105);
        map8.put("ItemText", "儲存");
       lstImageItem.add(map8); 
    //生成適配器的ImageItem <====> 動態數組的元素,兩者一一對應  
    SimpleAdapter saImageItems = new SimpleAdapter(this,  lstImageItem,//數據來源
R.layout.night_item,    //night_item的XML實現   
new String[] {"ItemImage","ItemText"}, //動態數組與ImageItem對應的子項
 new int[] {R.id.ItemImage,R.id.ItemText}); //ImageItem的XML文件裏面的一個ImageView,兩個TextView ID   
    //添加並且顯示  
    gridview.setAdapter(saImageItems); 
    //添加消息處理  
    gridview.setOnItemClickListener(new ItemClickListener()); 
    }
    //當AdapterView被單擊(觸摸屏或者鍵盤),則返回的Item單擊事件  
    class  ItemClickListener implements OnItemClickListener 
    { 
    public void onItemClick(AdapterView arg0, View arg1, int arg2, long arg3 ) { 
  //在本例中arg2=arg3  
  HashMap item=(HashMap ) arg0.getItemAtPosition(arg2); 
  //顯示所選Item的ItemText  
  setTitle((String)item.get("ItemText")); 
    }   
  }
}

第一個參數AdapterView,這個我也沒測試出來,估計就是加進去的那個Adapter

第二個參數View,這個應該就是點擊位置的控件,但GridView中不只是一個控件,所以這個控件作用也不大

第三個參數int 類型的index,這個是最重要的,這裏返回的是GridView被點擊的格子的索引

第四個參數long類型的index,跟第三個參數是同一個值

沒有上一則|日誌首頁|沒有下一則
回應
關鍵字
    沒有新回應!





Powered by Xuite
好站報報Orz
Google廣告
我的推薦清單