スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

リスト形式のAlertDialog

ラジオボタン付きAlertDialog


AlertDialogはテキストとボタンだけでなく、リスト形式のものも作ることができます。

このリストには、ラジオボタンやチェックボックスをつけることも可能です。

ではまず、ラジオボタンのついたリスト形式のAlertDialogを表示するアプリケーションを作ってみます。

main.xmlは、ボタンだけのシンプル表示。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/buttonclick"
android:layout_gravity="center"
android:onClick="listDialog">
</Button>
</LinearLayout>


ひとつ注意が必要なのは、

android:onClick="listDialog"

の部分です。

ここでは、ボタンをクリックした場合の処理を記述しており、listDialog()メソッドという名前のメソッドを自分で作ってを呼び出すようにしました。listDialog()メソッドの定義はJavaファイルで行います。

こうすることのメリットとしては、View.OnClickListener を省略できる点が挙げられます。インポートしてボタンにリスナを埋め込んでという一連の作業が、ボタンがクリックされた後の処理を行うメソッドの記述だけで済みます。


strings.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">HelloAndroid</string>
<string name="buttonclick">Click</string>
</resources>



HelloAndroid.java
package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.app.AlertDialog;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void listDialog(View v){
final CharSequence[] items={"item 0","item 1","item 2"};
AlertDialog.Builder adb=new AlertDialog.Builder(this);
adb.setTitle("Select an item !")
.setSingleChoiceItems(items, -1, null)
.show();
}
}


クリック動作による処理を行うlistDialog()メソッドの引数には、View型の変数を指定します。

リストの値は、CharSequence型の配列items[]に格納します。

ラジオボタンのついたリストを作るには、setSingleChoiceItems()メソッドを使います(ちなみに、チェックボックス形式にする場合は、setMultiChoiceItems()メソッドです)。

public AlertDialog.Builder setSingleChoiceItems (CharSequence[] items, int checkedItem, DialogInterface.OnClickListener listener)

第一引数がリストの値を格納した配列、第二がデフォルトのチェック状態、第三がクリックイベントが発生した場合の処理です。

第二引数については、チェックなしの場合には-1を指定します。今回はクリックイベントを定義しないので、第三引数はnullです。


リスナをつける


今度は、ノーマルな(ラジオボタンのない)リスト形式のAlertDialogに、リストを選択すると何らかの処理をするリスナを設置します。

package sample.basic;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.widget.Toast;

public class HelloAndroid extends Activity {

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
public void listDialog(View v){
final CharSequence[] items={"item 0","item 1","item 2"};
new AlertDialog.Builder(this)
.setTitle("Select an item !")
.setItems(items, new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int i) {
Toast.makeText(HelloAndroid.this
, String.format("%s が選択されました。", items[i])
, Toast.LENGTH_LONG).show();
}
})
.show();
}
}


ノーマルなリストを設置するのは、setItems()メソッドです。

リスナは、DialogInterface.OnClickListenerです。以前出てきたので難しくはないと思います。

なお、メソッドチェーンで短縮形にしています。

20110911_2
ノーマルなリスト形式のAlertDialog


20110911_1
item 1 を選択してToastが表示されました。

関連記事
スポンサーサイト

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://androidhacker.blog94.fc2.com/tb.php/50-f40b51d8
  • 閉じるボタン
レファレンス
月別アーカイブ
リンク
カテゴリ
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。