2011-11-09 9 views
2

私はGridViewにカスタムレイアウトの数十行を表示します。各レイアウトはEditTextとTextViewオブジェクトで構成されています。AndroidはGridViewのEditTextからテキストを取得します

私が正しく理解していれば、それを達成するためにBaseAdapterクラスを拡張する必要があります。もしそうなら、どのようにして特定のEditTextオブジェクトにアクセスできますか?

また、EditTextビューの1つが表示されなくなった場合、ユーザーが入力したテキストがビューのリサイクルによって失われますか?

私がここで説明しているもの(おそらくGridView以外のもの)を達成する簡単な手段はありますか?

+0

解決策はありますか? –

答えて

1

BaseAdapterを拡張する場合、オーバーライドする必要がある方法の1つはgetView(...)です。この方法では、表示する必要があるビューを作成します。 EditTextに入力されたテキストを維持する場合は、EditText(パラメータはgetView(...))の位置を渡してEditTextにaa TextWatcherを設定し、テキストが変更されたときはいつでもテキストを保存します。並べ替えの配列。その後、その位置がgetView(...)メソッドを介して戻るときは、配列からテキストを取得し、EditTextを入力します。

+0

聞こえますが、複雑です。これにはTableLayoutを使うほうがずっと簡単です(行数は100を超えてはなりません)。 – Allen

+0

それぞれのセルがEditTextとTextViewを持っているという意味で、すべてのセルが同一であれば、TableLayoutを使用する方が簡単ではありません。アダプタを使用する力は、画面外の位置がメモリに格納されず、メモリの占有スペースが小さくなるという事実にあります。スクロールするたびに、画面から外れているビューが再利用され、画面上にビューが表示されます。 –

+0

私はTextWatcherを使用するとき、私が上書きを強制する3つのメソッドがあることがわかります。私の文字列配列を更新されたテキストで更新するには、新しい文字列がどのEditTextオブジェクトに属しているかを知る必要があります(文字列配列に適切なインデックスを取得するために使用します)。編集可能オブジェクトは、それがどれであるかを「知っていますか? – Allen

0

グリッドの各要素のデータを保持する基礎となるデータ構造(たとえば、リスト)を使用する必要があります。

このリストからTextViewとEditTextを読み込む必要があります。

関連する問題