Tsutomu Yano
t_yano****@me*****
2010年 1月 13日 (水) 02:32:54 JST
矢野です。 ListViewは,ページがメモリにロードするたびに全要素を作り直すのがデフォルトの動作です。これは,毎回リストを最新の状態にするために,そういう使用になっています。しかしリスト上に入力項目がある場合には,毎回作り直されると困ってしまいますよね。サブミットしたときは直前と同じ状態であることを期待しているので,毎回作り直されてしまいますから。 というわけで,ListViewにフォーム入力項目を載せる場合のイディオムがあります。 ListViewのsetReuseItem(true)を呼び出すと,ページが一度コンストラクタで作られた後は,常に同じリスト項目を保持し続けるようになります。これにより,フォーム入力時に前の値がそのまま残る状態をつくることができます。 これはイディオムとして「ListViewに入力項目を載せたらsetReuseItem(true)を呼んでおく」と覚えてしまってかまわないくらいです。 代わりに,ListViewの内容は「更新してくれ」と支持しない限り変化しなくなります。更新したい場合はListViewのremoveAll()を呼び出して,全リスト項目を破棄する必要があります。次回ページロード時には再生成されます。 On 2010/01/13, at 2:08, イマム wrote: > 今村と言います。 > > 現在、リスト形式の入力画面を作成しています。 > 要素を繰り返し配置するためにListViewを用いています。 > > ここで、不正な値を入力してエラーとなった場合、 > 不正な値を入力した要素の値がクリアされてしまいます。 > > リスト形式でない場合は、不正な値がそのまま保持されるため、 > 実装方法が間違っていると思うのですが、 > どのように対応すれば良いかわからず困っています。 > > 対応方法をご存知の方いらっしゃいましたら > ご教授お願いします。 > --------------------------------------------------- 矢野 勉(やの つとむ) 電子メール: t_yano****@me***** ---------------------------------------------------