GridViewを使ってみたのでメモしておこう。

グリッド状にものを配置したいことって結構よくあると思うので。

プロジェクトの作成

Androidアプリケーションプロジェクトを新規作成します。

Androidアプリケーションプロジェクトを新規作成します。

アプリケーション名・プロジェクト名・パッケージ名を入力。

アプリケーション名・プロジェクト名・パッケージ名を入力。

プロジェクトの構成は特にいじらず。

プロジェクトの構成は特にいじらず。

アイコンもそのまま

アイコンもそのまま

作成するアクティビティはブランクで。

作成するアクティビティはブランクで。

ブランクアクティビティの名前も初期のままでいいや。

ブランクアクティビティの名前も初期のままでいいや。

MainActivityを編集してGridViewを使う

初期状態ではRelativeLayoutの中にTextViewで世界にこんにちはしてる状態なので、要らないもの削ってGridViewだけにしてあげる。

とりあえず、初期状態になりました。

とりあえず、初期状態になりました。

TextViewは今回いらないので削除。

TextViewは今回いらないので削除。

コンテナだけが残りました。

コンテナだけが残りました。

RelativeLayoutをGridViewに変更してしまいます。

RelativeLayoutをGridViewに変更してしまいます。

レイアウトの変更でGridViewにしてしまう。

レイアウトの変更でGridViewにしてしまう。

プレビューで変更点が見れるのがわかりやすい。

プレビューで変更点が見れるのがわかりやすい。

とりあえず、グリッドビューを配置することができました。コードをいじらずやれるのがいいね。

とりあえず、グリッドビューを配置することができました。コードをいじらずやれるのがいいね。

一応コードを見てみるとこんな感じになってますが。

一応コードを見てみるとこんな感じになってますが。

(レイアウトの変更の機能は地味に便利だなぁと)

Gridの中身のレイアウトを作る

次にGridView内の各セルのレイアウトを作ります。

次にGridView内の各セルのレイアウトを作ります。

適当に名前を付けて作る。

適当に名前を付けて作る。

とりあえず、なにもないレイアウトができる。

とりあえず、なにもないレイアウトができる。

文字列を表示させるテキストを入れておく。

文字列を表示させるテキストを入れておく。

よく考えたら、TextViewが一番トップに来てないといろいろまずかったので、RemoveContainerする。

よく考えたら、TextViewが一番トップに来てないといろいろまずかったような気がしたので、RemoveContainerする。

あと、文字の色も黒色に設定しておいた。

あと、文字の色も黒色に設定しておいた。

とりあえず今回は文字列を淡々と表示したいだけだったのでTextViewを一番上に。

いよいよ、ソース(MainActivity.java)を編集。

いよいよ、ソース(MainActivity.java)を編集。

ArrayListをimportする。(GridViewのitemの保管に使うやつ。)

ArrayListをimportする。(GridViewのitemの保管に使うやつ。)

MainActivityクラスにgridItemsメンバを追加。

MainActivityクラスにgridItemsメンバを追加。

ArrayAdapterをimport。(List→Viewに変換する役割のやつ。)

ArrayAdapterをimport。(List→Viewに変換する役割のやつ。)

MainActivityクラスにgridAdapterメンバを追加。

MainActivityクラスにgridAdapterメンバを追加。

gridItemsメンバを初期化する関数を作る。今回は、"item No.000"~"item No.999"という文字列を作った。(全部で1000個)

gridItemsメンバを初期化する関数を作る。今回は、”item No.000″~”item No.999″という文字列を作った。(全部で1000個)

GridView1にsetAdapterする関数を作る。

GridView1にsetAdapterする関数を作る。

これらの関数がonCreateで呼び出されるようにしてあげる。

これらの関数がonCreateで呼び出されるようにしてあげる。

実行してみた。

実行してみた。

3列表示にしてみた。

3列表示にしてみた。

3列のを実行してみた。

3列のを実行してみた。

とりあえずソースコード

MainActivity.java


package jp.ahox.gridviewtest;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.view.Menu;

import java.text.DecimalFormat;
import java.util.ArrayList;
import android.widget.ArrayAdapter;
import android.widget.GridView;

public class MainActivity extends Activity {

private ArrayList<String> gridItems; // GridViewのアイテム
private ArrayAdapter<String> gridAdapter; // GridViewへアイテムを渡すのに使うアダプタ

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// GridViewの初期化
initGridItems();
setGridAdapter();
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

// GridItemsの初期化を行う。
private void initGridItems(){
this.gridItems = new ArrayList<String>(); // gridItemsをnewする。
DecimalFormat decFrm = new DecimalFormat("000"); // 数値を3桁ゼロ詰で文字列にするフォーマット
int i;
for(i=0; i<1000; i++){ // 1000個のアイテムを作ってみる。
this.gridItems.add("item No." + decFrm.format(i));
}
}

// GridViewにアダプタをセットする。
private void setGridAdapter(){
// gridAdapterの生成(layout/item_gridview1.xml に従って、gridItemsごとのViewをつくらせる。)
int id_gridview1 = R.layout.item_gridview1;                                             // layout/item_gridview1のIDの取得
Context con_thisapp = getApplicationContext();                                     // このアプリケーションのコンテキストの取得
this.gridAdapter = new ArrayAdapter<String>(con_thisapp, id_gridview1, this.gridItems);
// GridViewの実体へのアダプタの設定
GridView obj_gridview1 = (GridView)findViewById(R.id.GridView1);     // GridViewの実体の取得
obj_gridview1.setAdapter(this.gridAdapter);
}
}

layout/activity_main.xml


<GridView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/GridView1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

</GridView>

layout/item_gridview1.xml


<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Medium Text"
android:textAppearance="?android:attr/textAppearanceMedium"
android:textColor="#000000" />

カテゴリー: PROG

0件のコメント

コメントする

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください