AlertDialogでファイル一覧から選択させて開く
この辺のサンプルでは、ダイアログをクリックさせて「何番目をクリックしたか」を取得しているけど、スコープの関係でファイルを開いてViewに表示する関数を呼ぶとかはできない。
- 八角研究所 : Android で再開する Java プログラミング(14) - ダイアログを制するものがAndroidを制する!
- Java/Android/応用編/選択ダイアログの表示 | PukiWiki
リストダイアログ - 橋本詳解 でスコープの関係で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();
んで自ら 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); }