Hatena::ブログ(Diary)

橋本詳解 RSSフィード

ここはメモ帳です

http://shokai.org
http://shokai.org/blog/

2010-06-02

[][]AlertDialogでファイル一覧から選択させて開く

この辺のサンプルでは、ダイアログをクリックさせて「何番目をクリックしたか」を取得しているけど、スコープの関係でファイルを開いてViewに表示する関数を呼ぶとかはできない。


リストダイアログ - 橋本詳解 でスコープの関係でfinalつけた変数を渡してたけど

よく考えたらJavaは複数のinterfaceをimplementsできるから、DialogInterface.OnClickListenerも実装してしまえばいいのだった



ファイル開く loadFile(File f) 関数を持っているクラス自らimplementsする

SDカード内のファイルの読み書き - 橋本詳解を基にしている

public class Test extends Activity implements View.OnClickListener, DialogInterface.OnClickListener{
   private String[] dialog_fileNames;
}

dialogに表示したファイル名の配列は、後で使うのでメンバとして持っておく。



new File("/path/to/dir").listFiles(); とかでファイル名の一覧を取得しておいて、

String[] fileNamesを作る。これをダイアログに表示する。onClickのリスナとして自分を登録。

this.dialog_fileNames = fileNames;
new AlertDialog.Builder(this).setTitle("select").setItems(fileNames, this).show();

これでダイアログが表示される。

list dialog



んで自ら DialogInterface.OnClickListener をimplementsしてるから、onClickで選択されたダイアログと、上から何番目が選択されたかが取得できる

これで同じinstanceのメソッドからになるのでloadFile(File f)が呼び出せる

public void onClick(DialogInterface dialog, int which) {
    Log.v("selected index", Integer.toString(which));
    File f = new File(this.dialog_fileNames[which]);
    this.loadFile(f);
}

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/shokai/20100602/1275499332