Android プログラミングでは、GridView と ListView はどちらも一般的に使用されるマルチコントロール レイアウトであり、Nine Palaces Diagram を実装するには GridView が最初の選択肢となります。この記事では、GridView を使用して Nine Palaces Diagram を実装する方法を紹介します。 GridView には多くの用途があります。インターネットで最も一般的に紹介されている方法は、BaseAdapter を継承する ImageAdapter を実装し、それを GridView に使用する方法です。この記事で紹介する GridView の使用方法はこれと非常に似ています。以前紹介したListViewに。
まず、この記事のコードを実行した結果を見てみましょう。
この記事では、main.xml、night_item.xml、JAVA ソース コードの 3 つのファイルを追加/変更する必要があります。
main.xml ソース コードは次のとおりです。これは、項目をロードするために使用される GirdView です。
<?xml version="1.0"coding="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"/>
いくつかのプロパティを簡単に紹介します。
android:numColumns="auto_fit"、GridView の列数は自動に設定されます
android:columnWidth="90dp"、各列の幅、つまりアイテムの幅
android:stretchMode="columnWidth"、スケーリングは列幅のサイズと同期されます
android:verticalSpacing="10dp"、2 行間の余白。例: 行 1 (NO.0~NO.2) と行 2 (NO.3~NO.5) の間の間隔は 10dp です。
android:horizontalSpacing="10dp"、2 つの列間の余白。
次に、night_item.xml を紹介します。この XML は、前の ListView の ImageItem.xml とよく似ています。
<?xml version="1.0"coding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:paddingBottom ="4dip" android:layout_width="fill_parent"> <ImageView android:layout_height="wrap_content" android:id="@+id/ItemImage" android:layout_width="wrap_content" android:layout_centerhorizontal="true"> </ImageView> <TextView android:layout_width="wrap_content" android:layout_below="@+id/ItemImage" android:layout_height="wrap_content" android:text="TextView01" android:layout_centerhorizontal="true" android:id="@+id/ItemText"> </TextView></RelativeLayout>
最後に、JAVA ソース コードがあります。これは前の ListView JAVA ソース コードとよく似ていますが、より多くの「選択された」イベント処理が含まれています。
public void onCreate(Bundle SavedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);GridView Gridview = (GridView) findViewById(R.id.gridview);//動的配列を生成し、 data ArrayList <HashMap<String, Object>> lstImageItem = new ArrayList<HashMap<String, Object>>();for(int i=0;i<10;i++){ HashMap<String, Object> map = new HashMap<String, Object>(); icon);//画像リソースのIDを追加map.put("ItemText", "NO."+String.valueOf(i));//シリアル番号に応じてItemTextを作成lstImageItem.add(map);}//動的配列のアダプターの ImageItem <====> 要素を生成します。2 つは 1 対 1 に対応します SimpleAdapter saImageItems = new SimpleAdapter(this, //説明なし lstImageItem,//データソース R.layout.night_item,//night_item の XML 実装//ImageItem に対応する動的配列とサブアイテム new String[] {"ItemImage","ItemText"}, //ImageItem XML ファイル内の 1 つの ImageView と 2 つの TextView ID new int[] {R.id.ItemImage,R.id.ItemText});//gridview を追加して表示します。 setAdapter(saImageItems);//メッセージ処理を追加gridview.setOnItemClickListener(new ItemClickListener());}//AdapterView がクリックされると (タッチ スクリーンまたはキーボード)、返される項目クリック イベント クラス ItemClickListener は OnItemClickListener を実装します{ public void onItemClick(AdapterView<?> arg0,//クリックが発生したアダプタビュー View arg1 ,//クリックされたAdapterView内のビュー int arg2,//アダプター内のビューの位置long arg3//クリックされた項目の行ID ) { //この場合、arg2=arg3 HashMap<String, Object> item=(HashMap<String, Object>) arg0.getItemAtPosition(arg2); //すべて表示 SelectアイテムのItemText setTitle((String)item.get("ItemText"));