ListViewにおける各行のフォントサイズを変更する

デフォルトのListViewの行はちょっとフォントサイズが大きめなので変えたい。

教科書であればAdapterクラスを拡張するということになるのだろうが、面倒だ。単にサイズを変更したいだけなら、手っ取り早いのは無名化してしまうことでも可能だ。

  • AdHokActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
 〜
    ArrayAdapter adp = new ArrayAdapter(this
            , android.R.layout.simple_list_item_1, values ) {
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                TextView view = (TextView)super.getView(position, convertView, parent);
                view.setTextSize( position );
                view.setText("[ TextSize = " + view.getTextSize() + " ] \n" + view.getText());
                return view;
            }
        };
    this.list.setAdapter(adp);

インタフェースや抽象クラスではよく使うんだけど、具象クラスではついつい忘れてしまう書き方だ(私だけか)

  • 実行結果

もっとも、この場合ListViewの各行にレンダリングされるのはTextViewだということを前提にしているので、ListViewの派生物を使う場合はキャスト例外が発生する可能性がある。
また、getViewメソッドはいつ呼ばれるか判らないので、効率を考えると、希望のサイズにセットしたならば、以降は処理をしない工夫が必要だろう。