ListViewにおける各行のフォントサイズを変更する
デフォルトのListViewの行はちょっとフォントサイズが大きめなので変えたい。
教科書であればAdapterクラスを拡張するということになるのだろうが、面倒だ。単にサイズを変更したいだけなら、手っ取り早いのは無名化してしまうことでも可能だ。
- AdHokActivity.java
@Override protected void onCreate(Bundle savedInstanceState) { 〜 ArrayAdapteradp = 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メソッドはいつ呼ばれるか判らないので、効率を考えると、希望のサイズにセットしたならば、以降は処理をしない工夫が必要だろう。