2012年04月23日

リストビューを作成する


リストビュー(ListView)は複数の項目を一覧表示するためのものです
一覧表示するにはウィジェットであるListViewクラスを使う方法と
リスト表示専用のアクティビティ、ListActivityクラスを使う方法があります
リスト表示はAdapterクラスと組み合わせて使う事ができ
いろいろなAdapterクラスとの組み合わせによりさまざまな表現方法があります

基本形とArrayAdapterクラス
ArrayAdapterを使った簡単なサンプルです
表示するリストは { "test1", "test2", "test3", "test4" }としています
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
public class MainActivity extends Activity {
    private String[] mStrings = { "test1", "test2", "test3", "test4" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        ListView lv = new ListView(this);
        setContentView(lv);
 
        ArrayAdapter adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, mStrings);
        lv.setAdapter(adapter);
    }
}
最初にmStringsで表示させる文字列を指定しています
次にListViewを新規に作成し、setContentViewで表示させます
ArrayAdapterで表示する文字列とレイアウトを指定しsetAdapterでlvと結びつけています
ちなみにandroid.R.layout.simple_list_item_1はandroidにもともと用意されている定義済みのレイアウトファイルのIDです
実行結果は次のようになります
device92.png

レイアウトファイルを独自設定する
ArrayAdapterの第2引数で指定しているレイアウトファイルには
独自に作成したレイアウトファイルを指定する事ができます
res/layoutを右クリックしxmlファイルを新規作成します
list.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content">
</TextView>
次にMainActivityを以下のように変更します
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
public class MainActivity extends Activity {
    private String[] mStrings = { "test1", "test2", "test3", "test4" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
 
        ListView lv = new ListView(this);
        setContentView(lv);
 
        ArrayAdapter adapter = new ArrayAdapter(this,
                R.layout.list, mStrings);
        lv.setAdapter(adapter);
lv.setSelection(1);
lv.setTextFilterEnabled(true);
    }
}
これで先ほどと同様の実行結果を得られます
スポンサードリンク

Spinnerをカスタムする


前回は基本的なSpinnerを作成しました
スピナーを作成する
今回は前回作成したものをベースにカスタムしていこうと思います
まずは
setDropDownViewResource
を追加してレイアウトを変更してみます
一応前回の復習もかねてソース全体を載せます
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;
 
public class MainActivity extends Activity {
    private String[] mStrings = { "test1", "test2", "test3", "test4" };
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		//リニアレイアウトを配置
		 LinearLayout layout = new LinearLayout(this);
		 layout.setOrientation(LinearLayout.VERTICAL);
		 setContentView(layout);
		 //リニアレイアウトにスピナーを追加
		 Spinner spinner = new Spinner(this);
		 layout.addView(spinner);
		 ArrayAdapter adapter = new ArrayAdapter(this,
		 android.R.layout.simple_spinner_item, mStrings);
		 spinner.setAdapter(adapter);
		 
		 //スピナーのレイアウト変更
		 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		 spinner.setSelection(1);
		
		 //スピナーのクリックイベントを取得する
		 spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
			//Itemが選択された時
			public void onItemSelected(AdapterView parent,
				View view, int position, long id) {
				//parentのspinnerを指定
				Spinner spinner = (Spinner) parent;
				//選択されたitemを取得
			    String item = (String) spinner.getSelectedItem();
			    //Toast表示
			    Toast.makeText(MainActivity.this,
			            String.format("%sが選択されました。", item),
			            Toast.LENGTH_SHORT).show();
            }
			//何も選択されなかったとき
            public void onNothingSelected(AdapterView parent) {
                Toast.makeText(MainActivity.this,
                        "何も選択されませんでした", Toast.LENGTH_SHORT).show();
            }
        });
    }
}
これを実行すると以下のようにスピナーのレイアウトが変更されます
device90.png

ちなみにspinner.setSelection(1)の部分はスピナーの初期値(+1)を変更するものです
今回は“1”なためtest2が初期値になっています(0のとき項目1が選択されている)


次にspinner.setPromptを追加してみます
これはSpinnerの題名を表示させるものです
追加部分を以下のように変更してみます
		 //スピナーのレイアウト変更
		 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
		 spinner.setSelection(2);
		 spinner.setPrompt("test一覧");
これを実行してみると・・・
device91.png
表題が表示されるようになりました
スポンサードリンク

posted by kenken at 16:41 | Comment(0) | TrackBack(0) | ウィジェット スピナー | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。