« 中華Padを買った | トップページ | Custom Dialog »

2011年1月30日 (日)

割り勘計算機(3)

今の状況はというと、遅々としてすすんでます。

結局、アダプタを作るのに週末+αを消費してしまい、現状はアダプタ経由でListViewにデータを入れるところまでは行きました。

どこに引っかかっていたかというと、まず、ListActivityなるものがあって、最初、これを継承して作り始めたのですが、つまりは、ListAdapterが最初からくっついてるActivityです。これを使うと、アダプタを指定するだけでListViewが使えたりします。

じゃぁ、ListAdapterはどうやってListViewにセットされるかといえば、idがandroid.R.id.listを持っているもの、と決まっているようです。ListViewを作っただけではだめで、このidを上記の値にする必要があります。これに気がつくのに結構時間掛かってしまいました。

で、今回のアプリはListViewを2個持つ予定なのでこれは使えないということになり、じゃぁどうするのよ?ということになって、結局、xmlに普通にユニークなidつけたListViewをつくり、それをfindViewByIdして、それにsetAdapterすればいいという、ごくごく当たり前な結論に達しました。急がば回れ、そういうことです。

次に問題になったのが、getViewがさっぱり呼ばれない。これもかなりはまったのですが、結局、Adapterのコンストラクタの中でsuperのコンストラクタを呼ぶのですが、これの第3要素にArrayを渡さなければいけない。というのが原因でした。まぁ、分かってみればその通りなんですけどね。

さて、その次問題になるのがレイアウトです。できれば2つのListViewでカラムをそろえたいところです。当初、TableLayoutでやっていたのですが、どうも、全体をひとつのTableLayoutにして、ListViewの個々のViewにTableRowだけしか作らないというのは許されないようです。

アダプタのgetViewでTableRowをインフレートするところまではうまくいくのですが、ListViewが子Viewの高さを測ろうとするところでNullPointerExceptionになります。
TableRowのレイアウトに高さを固定で入れたりしたのですが、やっぱりだめでした。なんかうまくやる方法があるのかもしれませんが、これ以上かまってられないのでLinearLayoutで行くことにしました。

そんなこんなで、現状はプログラム中でセットしたデータを画面に表示できた、という段階です。明日以降にコールバックつけて、次の週末までにはなんとか形にしたいと思っています。いまだに、どうやってデータを入れるのか具体的に、つまりは、TextViewをEditTextに変えるのを本当に使うのか真剣に考えてなかったりするのですが。

« 中華Padを買った | トップページ | Custom Dialog »

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/60027/50731736

この記事へのトラックバック一覧です: 割り勘計算機(3):

« 中華Padを買った | トップページ | Custom Dialog »