頻繁に使うことが予想されるUIなので、しっかりマスターしておこう。
リストビューの使い方の基本は、
1. リストビューのインスタンスを生成
2. アダプタのインスタンスを生成
3. 表示したいアイテムをアダプタに追加
4. リストビューにアダプタをセット
5. リストビューにリスナ(OnItemClickListenerなど)を登録
である。
以下は、外部ストレージのルートにあるファイルやフォルダをリストビューに表示するだけの簡単なサンプルである。
まずは activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <ListView android:id="@+id/listview1" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </LinearLayout>
次に MainActivity.java
package com.example.listviewsample; import java.io.File; import com.example.listviewsample.R.id; import android.app.Activity; import android.os.Bundle; import android.os.Environment; import android.view.Menu; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.Toast; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // リストビューのインスタンスを生成 ListView listView = (ListView) findViewById(id.listview1); // 配列アダプタのインスタンスを生成 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1); // 外部ストレージのルートのファイル一覧をアイテムに追加 String path = Environment.getExternalStorageDirectory().getPath(); File file = new File(path); for (File f : file.listFiles()) { if (f.isDirectory()) { // ディレクトリなら末尾にスラッシュ adapter.add(f.getName() + "/"); } else { adapter.add(f.getName()); } } // リストビューにアダプタをセット listView.setAdapter(adapter); // リストビューのアイテムがクリックされた時に呼び出されるリスナーを登録 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView) parent; // クリックされたアイテムを取得 String item = (String) listView.getItemAtPosition(position); // 取得したアイテムをトースト表示 Toast.makeText(MainActivity.this, item + "がクリックされました。", Toast.LENGTH_SHORT).show(); } }); // リストビューのアイテムが選択された時に呼び出されるリスナーを登録 listView.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { ListView listView = (ListView) parent; // 選択されたアイテムを取得 String item = (String) listView.getSelectedItem(); // 取得したアイテムをトースト表示 Toast.makeText(MainActivity.this, item + "が選択されました。", Toast.LENGTH_SHORT).show(); } @Override public void onNothingSelected(AdapterView<?> parent) { // // トースト表示 // Toast.makeText(MainActivity.this, "何も選択されていません。", // Toast.LENGTH_SHORT).show(); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
リストビューのアイテムがクリック、または選択されたら、選択されたアイテム名がトースト表示されるだけの簡単なお仕事である。
■参考にさせていただいたサイト
リストビュー(ListView)を使用するには: 逆引きAndroid入門