2011年1月9日日曜日

【android アプリ 開発】 GridView 作成








■GridView 作成

GridViewはアイテムを2次元マトリクスのように表示する。
スクロールしながら見ることも可能。

次は GridViewを利用してイメージを出力した結果である。



1.次のようにEclipseから新しいプロジェクトを生成する。



2.次のイメージをローカルに保存し、res -> drawable-hdpi フォルダにドラッグアンドドロップする。




ドラッグアンドドロップすると次のようになる。



3.res -> layout -> main.xml を変更する。


<?xml version="1.0" encoding="utf-8"?>
<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:numColumns="auto_fit"
    android:verticalSpacing="10dp"
    android:horizontalSpacing="10dp"
    android:columnWidth="90dp"
    android:stretchMode="columnWidth"
    android:gravity="center"
/>



4.src -> my.HelloGridView -> HelloGridView.java を変更する。


package my.HelloGridView;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.GridView;
import android.widget.ImageView;
public class HelloGridView extends Activity {
    /** Called when the activity is first created. */
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.main);
     GridView gridview = (GridView) findViewById(R.id.gridview);
     gridview.setAdapter(new ImageAdapter(this));
 }

 public class ImageAdapter extends BaseAdapter {
     private Context mContext;
     public ImageAdapter(Context c) {
         mContext = c;
     }
     public int getCount() {
         return mThumbIds.length;
     }
     public Object getItem(int position) {
         return null;
     }
     public long getItemId(int position) {
         return 0;
     }
     // create a new ImageView for each item referenced by the Adapter
     public View getView(int position, View convertView, ViewGroup parent) {
         ImageView imageView;
         if (convertView == null) {  // if it's not recycled, initialize some attributes
             imageView = new ImageView(mContext);
             imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
             imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
             imageView.setPadding(8, 8, 8, 8);
         } else {
             imageView = (ImageView) convertView;
         }
         imageView.setImageResource(mThumbIds[position]);
         return imageView;
     }
     // references to our images
     private Integer[] mThumbIds = {
             R.drawable.f1, R.drawable.f2,
             R.drawable.f3, R.drawable.f4,
             R.drawable.f5, R.drawable.f6
     };
 }

}


コードを見ると、ImageAdapter クラス (太字の部分)がHelloGridView クラス内部に追加して定義されている。

private Integer[] mThumbIds = {
             R.drawable.f1, R.drawable.f2,
             R.drawable.f3, R.drawable.f4,
             R.drawable.f5, R.drawable.f6
     };

上のコードは mThumbIds 配列に出力するイメージを定義している。
res -> drawable-hdpi フォルダに格納しているイメージを使用している。


5.CTRL + F11で実行する。

[ 実行結果 ]

Blog Archive