2011-11-16 4 views
0

私は、ユーザが簡単なタイムシートのようなトランザクションをリストに記録できるアプリを作っています。私はカスタムCursorAdapter子孫を持つsqliteクエリに接続されているlistviewでこれを行っています。これまでのところうまくいきます。リストビュー内の各アイテムのサブレコードの読み込み

私が次にしようとしているのは、ユーザーが任意の数の「タグ」を個別の転写に追加できるようにすることです(Gmailの電子メールに対するラベルと思う)。私はトランザクションにタグをリンクするために多対多の関係テーブルを持っていますが、個々のレコードがそのタグをロードして表示できるように、既存のリストビューとカーソル配置を変更する方法がわかりません。

2つの階層構造のオブジェクト構造にすべてのデータをロードしてから、それをリストビューのデータソースとして使用することをお勧めします。 CursorAdapterを使用する方がパフォーマンスが良いと思われるのに対して、ロードの遅延は確かに発生するため、このアイデアは気に入らない。

各リストビューアイテム内にタグを表示する方法は、Html.fromHtml()を使用して異なる色の行の一番下に沿って線形にプレーンテキストと同じようにしました。私はすでにこの部分が働いているので、私は、既存のリストビュー(可能であれば)に固執することを望んでいました。私の問題は、タグをDBから取り出し、リストビューの各行で利用できるようにするための最も効率的な方法を見つけることだけです。

私は非常に新しいアンドロイドです - これを行うには巧妙な方法があるのか​​、それとも手動のエクササイズになるのでしょうか?

答えて

0

これのためのショートカットはありません。 LinearLayoutRelativeLayoutなどのサブクラス化によって、Viewを作成する必要があります。 Viewクラスでは、対応するデータを設定するタグについて引数を取る 'setTag(tag)'のようなパブリックメソッドを公開します。 Viewには、そのビューへの参照を保持するフィールドが必要です。つまり、AdapterのgetViewでビューを返す前に、データをビューにバインドしてから、Viewからその状態を変更することができます。