壁紙変更アプリ (3)
前回に続いて壁紙変更アプリを作っていきます。
週末に少し時間がとれるだけなので亀の歩ですが、、、。
クリック処理について以下を参考に匿名クラスを使用して実装。
クリック処理(匿名クラス) - Buttonクラス - Android入門
さらに、ローカルストレージの内容を出すために以下を参考に実装。
場所はスクリーンショット保存場所を決め打ちで指定して、
取得できたリストを全て出力します。
睡眠学習 ディレクトリ内にあるファイル名を一覧表示する
取得リストを表示するためのリストビューについては以下を参考にしました。
Android リストビュー(ListView)を使う | Tech Booster
で、匿名クラス内での ArrayAdapter の第一引数 context に
何を指定すればよいかわからなくて悩み続ける。。。
色々探してたら以下のサイトにたどり着きました。
ど素人のAndroidアプリ開発入門 - Intentによる画面遷移
そうだったのかー。敗因は Java の理解不足か…勉強します。。
で、MainActivity.this を指定することでビルド完了。
ディレクトリの中身のファイルは出ました。
で、選択後の処理を実装しようとしたところ、
OnItemClick と OnItemSelected の違いがわからない。
両方選択しているから同じじゃないの?と思ったのですが、
そうか、OnItemSelected はポインティングデバイス用の対応なのね…。
ASCII.jp:Androidアプリで複数の項目を表示するリストビューを使う (2/2)|これで作れる! Androidのアプリケーション
というわけで、OnItemClick を使い、ファイル名を選択すると、
OnItemClick の各パラメータが出力されるようにしました。
作成したソースコードはこちら。
Button button; button = (Button) findViewById(R.id.Button_Choose); //button.setOnClickListener(this); button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Log.v("tag", "test1"); listview = (ListView) findViewById(R.id.listview); item_list = new ArrayList<String>(); // Hard-coded files position. files = new File("/storage/sdcard0/Pictures/Screenshots").listFiles(); // Get files list if (files != null) { for (int i = 0; i < files.length; i++) { item_list.add(files[i].getName()); } } ArrayAdapter<String> arrayadapter = new ArrayAdapter<String> (MainActivity.this, android.R.layout.simple_expandable_list_item_1, item_list); listview.setAdapter(arrayadapter); listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String click_parent = (String) parent.getClass().getSimpleName(); String click_position = String.valueOf(position); String click_id = String.valueOf(id); Log.v("tag", String.format("onItemClick click_parent : %s", click_parent)); Log.v("tag", String.format("onItemClick click_position : %s", click_position)); Log.v("tag", String.format("onItemClick click_id : %s", click_id)); // ToDo : Implement for changing the wallpaper } }); } });
起動するとこんな感じ。
上記のファイルを上から順番にクリックしていくと、logcat に以下のログが出力されました。
V/tag (14915): onItemClick click_parent : ListView V/tag (14915): onItemClick click_position : 1 V/tag (14915): onItemClick click_id : 1 V/tag (14915): onItemClick click_parent : ListView V/tag (14915): onItemClick click_position : 2 V/tag (14915): onItemClick click_id : 2 V/tag (14915): onItemClick click_parent : ListView V/tag (14915): onItemClick click_position : 3 V/tag (14915): onItemClick click_id : 3 V/tag (14915): onItemClick click_parent : ListView V/tag (14915): onItemClick click_position : 4 V/tag (14915): onItemClick click_id : 4
次は取得したファイルを壁紙に設定だー。