2012年04月26日

ListViewのクリック


前回までにリストビューの基本的な表示を行いました
ListActivityを利用したリスト表示
今回は表示したリストビューをタッチした時のイベントを検出したいと思います
リストビューの選択を検出するには
OnItemClickListenerを使用します
これは指定したitemがクリックされたときに実行されるものでこれを
作成したリストビューに適用すれば、リストビューがクリックされた時に実行されます
また十字キーなどにより選択(セレクト)された時には
setOnItemSelectedListenerを使用します
今回はクリックやセレクトされたときにLogを出力するプログラムを作成してみます
MainActivity.java
package blog.test;
 
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
 
public class MainActivity extends Activity {

    private String[] mStrings ={ "test1", "test2", "test3", "test4" };
    
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //リストビューを作成 
        ListView lv = new ListView(this);
        setContentView(lv);

        ArrayAdapter adapter = new ArrayAdapter(this,
                android.R.layout.simple_list_item_1, mStrings);
        lv.setAdapter(adapter);
 
        //クリックイベントを検出
        lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView parent, View view,
                    int position, long id) {
            	//listViewを指定
                ListView listView = (ListView) parent;
                //クリックされたものを取得
                String item = (String) listView.getItemAtPosition(position);
                //Log出力
                Log.v("tag", String.format("onItemClick: %s", item));
            }
        });
        
        //セレクトされたときに実行される
        lv.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            public void onItemSelected(AdapterView parent, View view,
                    int position, long id) {
            	//listViewを指定
                ListView listView = (ListView) parent;
                //クリックされたものを取得
                String item = (String) listView.getSelectedItem();
                Log.v("tag", String.format("onItemSelected: %s", item));
            }
            //何も選択さてないときに実行
            public void onNothingSelected(AdapterView parent) {
                Log.v("tag", "onNothingSelected");
            }
        });
    }
}
初期画面は以前と変わりません
device92.png
ためしにtest1をクリックしてみると・・・
device94.png
Log“onItemClick:test1”が出力されます

次に下キーでtest1をセレクトするとします
device95.png
すると・・・
device96.png
Log“onItemSelicted:test1”が出力されます

スポンサードリンク

この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック