スポンサーサイト

上記の広告は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を消すためには、「←」ボタン?をクリックしないといけないようです。

スポンサーサイト

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

ListViewの使い方2:テキストサイズを変更する

先日の記事「ListViewの使い方」で表示したリストはテキストサイズが小さかったので、テキストサイズを変更してみます。


基本的にListViewを使用する際には、Adapterを設定します。先日の記事の例では、ArrayAdapterクラスのコンストラクタに、listview.xmlファイルのリソースIDを第二引数として渡しました。ここで指定したlistview.xmlファイルが、ListViewで表示するテキストのレイアウトを規定しています(と思います)。


つまり、ListViewに表示されるテキストのサイズを変更したい場合は、上記のlistview.xmlファイルでテキストサイズを指定してあげると良いという推測。




では、実際にテストしてみます。具体的には、先日の記事で使用したコードはそのまま、listview.xmlファイルだけ以下のようにします。


<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp">

</TextView>

変更点は、android:textSize="24sp"という部分。その名の通り、テキストサイズを指定します。変更点はこれだけ。後は実行結果を以下に示します。


ListViewテキストサイズ12sp

上記はtextSize="12sp"の場合。


ListViewテキストサイズ24sp

上記はtextSize="24sp"の場合。listview.xmlファイルを変更するだけで、ListViewに表示するテキストのサイズを変更することができました。




他にも、listview.xmlファイルを修正していくと、もっといろいろいじくれると思います(フォントやカラーなど)。


と、ここまで書いてきて、ListViewのXML AttributeにはtextSizeは無いのかと思いましたが、どうやら無いようです。Android DevelopersのサイトのXML Attributeには、text系の属性がないので無理っぽいです。

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

プロフィール

sepiablue

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

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