從族譜上可以知道 GridView 與 ListView 是兄弟,一樣可以使用靜態或動態的資料,一樣是佔據整個頁面,不同的地方在於 ListView 是條列式,GridView 是格狀式。
XML layout 設定如下,特別的設定是一些有關每一格的長寬以及與畫面的比例關係,以及格距:
<GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview" android:layout_width="fill_parent" android:layout_height="fill_parent" android:columnWidth="90dp" android:numColumns="auto_fit" android:verticalSpacing="10dp" android:horizontalSpacing="10dp" android:stretchMode="columnWidth" android:gravity="center" />Activity 程式如下:
public class C_Adapter extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); GridView gridview = (GridView) this.findViewById(R.id.gridview); gridview.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(C_Adapter.this, position + " - " + view, Toast.LENGTH_SHORT).show(); } }); // gridview.setAdapter(this.createArrayAdapter()); gridview.setAdapter(this.createImageAdapter()); } private BaseAdapter createImageAdapter() { return new BaseAdapter() { private Integer[] icons = new Integer[] { R.drawable.wanwan_01, R.drawable.wanwan_02, R.drawable.wanwan_03, R.drawable.wanwan_04, R.drawable.wanwan_05, R.drawable.wanwan_06, R.drawable.wanwan_07, R.drawable.wanwan_08, R.drawable.wanwan_09, R.drawable.wanwan_10, R.drawable.wanwan_11, R.drawable.wanwan_12, R.drawable.wanwan_13, R.drawable.wanwan_14, R.drawable.wanwan_15, R.drawable.wanwan_16, R.drawable.wanwan_17, R.drawable.wanwan_18 }; @Override public View getView(int position, View convertView, ViewGroup parent) { ImageView iv; if (convertView == null) { iv = new ImageView(C_Adapter.this); iv.setLayoutParams(new GridView.LayoutParams(85, 85)); iv.setScaleType(ImageView.ScaleType.CENTER_CROP); iv.setPadding(8, 8, 8, 8); } else { iv = (ImageView) convertView; } iv.setImageResource(this.icons[position]); return iv; } @Override public int getCount() { return this.icons.length; } @Override public Object getItem(int position) { return null; } @Override public long getItemId(int position) { return 0; } }; } private ArrayAdapter<String> createArrayAdapter() { String[] array = new String[] { "禮拜一", "禮拜二", "禮拜三", "禮拜四", "禮拜五" }; return new ArrayAdapter<String>(this, R.layout.arrray_item, array); } }一樣先用 ArrayAdapter 測試:
再測試另一個主題,自行實做一個 ImageAdapter,類似於 ArrayAdapter,不同於 ArrayAdapter 是以 TextView 方式呈現資料,而 ImageAdapater 是用 ImageView 呈現資料。
繼承 BaseAdapter 並實做相關 API,最重要的就是 getView(...) 的實做,它回傳的就是資料集合物件的呈現方式,這裡用的是包含一張影像的 ImageView。
最後在 res/drawable 放入要顯示的影像檔(支援 PNG, JPG, GIF)就可以了。
請問如何使用gallery或gridview讀取sdcard中,指定目錄的圖片
回覆刪除參考一下「在 Android 裡讀取 SD 卡裡的檔案」(http://cw1057.blogspot.tw/2011/11/android-sd.html)囉!
回覆刪除