スポンサーサイト

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

ListViewの使い方3:リストを選択できるようにする

ListViewの使い方を今まで調べてきましたが、まだリストを選択することができなかったので、リストを選択できるようにします。


具体的には、ListViewクラスのsetOnItemClickListenerメソッドを使用するだけでOKです。


まず、setOnItemClickListenerメソッドの定義を調べます。参考にするサイトは、Android Developers・・・と思いきや、setOnItemClickListenerメソッドが無い。おそらくListViewクラスのスーパークラスに定義されているのだと思って検索すると、AdapterViewのページにありました。



public void setOnItemClickListener (AdapterView.OnItemClickListener listener)
AdapterViewがクリックされたときに実行されるコールバックを登録する。

listener - 登録するコールバック


つまり、setOnItemClickListerメソッドを呼び出し、引数でAdapterView.OnItemClickListenerクラスのコールバックを登録するだけでOK。




それでは、コーディングしていきます。ベースとなるのは、前々回の記事のコード。今回はメインのソースコードである「SampleListView.java」のみ修正します。修正内容は上記記載の通り、setOnItemClickListenerメソッドを呼んであげるだけ。




package ja.sample.SampleListView;

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;

public class SampleListView extends Activity {
private ListView listView = null;
private AlertDialog.Builder dialog = null;
private String[] data = {"File", "Edit", "Run", "Source", "Navigate"};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// ダイアログ表示のため
dialog = new AlertDialog.Builder(this);

// ListViewを取得
listView = (ListView)findViewById(R.id.ListViewSample);
// ArrayAdapterクラスのオブジェクトを作成
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String> (this, R.layout.listview, data);
// ArrayAdapterクラスのオブジェクトをListViewに設定
listView.setAdapter(arrayAdapter);
// ListViewが選択されたときの挙動
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ListView listView = (ListView)parent;
String str = (String)listView.getItemAtPosition(position);
dialog.setTitle("Selected");
dialog.setMessage(str);
dialog.show();
}
});
}
}



今回はListViewの要素がクリックされたら、何かしらアクションをさせたいので、AlertDialogクラスを使用しています。基本的にAlertDialogクラスのオブジェクトを生成して、setTitleメソッドでタイトルを、setMessageで表示するメッセージを設定しています。


また、今回は、クリックされたListViewの要素名を表示させたいので、AdapterView.OnItemClickListenerクラスのonItemClickメソッドの第三引数positionから、要素名を取得します。取得するためには、onItemClickメソッドの第一引数parentをキャストして、ListViewクラスのオブジェクトを取得します。次に、取得したListViewクラスのオブジェクトで、getItemAtPositionメソッドを用います。これでOK。




最後に実行結果。


SampleListView_03_setOnItemClickListener

上記はListViewの「File」要素をクリックした結果です。選択された要素名「File」が、AlertDialogで表示されています。とりあえず、今回の目的は果たしました。ちなみに、表示したAlertDialogを消すためには、「←」ボタン?をクリックしないといけないようです。

テーマ : プログラミング
ジャンル : コンピュータ

コメントの投稿

非公開コメント

プロフィール

sepiablue

Author:sepiablue
組込みソフトウェアエンジニアやってます。普段はC言語使い。
趣味はプログラミング、京都旅行で神社巡り。
AndroidアプリをMacで開発中。

最新記事
スポンサードリンク
スポンサードリンク
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。