2012-05-08 6 views
2

私はSQLiteデータベースからデータを取得しています。通常、DBから項目を取得して、請求書のすべての詳細を保持するカスタムデータクラス "請求書"に入れます。請求書の中には、請求書の残高(セールス・インボイスは請求書のクレジットを戻し、経費請求書は請求書のデビットを返す)や他の会計特有のクォークを返すビジネス・ロジックがあります。ビジネスロジックをListView Controllerに挿入して、CursorおよびSimpleCursorAdapterを使用するか、カスタムListViewアダプタをデータクラスに使用しますか?

これは、SQLクエリを実行してカーソルを取得すると、カーソルがSimpleCursorAdapterにチャッキングされ、Invoiceクラスに埋め込まれたビジネスロジックがバイパスされるため、カーソルを使用することができないと言われています。私は、各カーソルの結果をInvoiceオブジェクトに変換して、何らかの形でこれらのオブジェクトをListViewにリストしなければならないと考えています。これが最適な方法ですか?あるいは、私は規則を破ってロジックを私のコントローラにコード化するべきですか(クラスは最初にカーソルをつかんでいます)?

可能な限り理解できるようにしたいと思います。これは、ロジックを実行するためにコントローラーでいくつかのロジックを一緒にハッキングするのではなく、この問題に対する(純粋な方法で)このオブジェクトを可能な限りMVCパラダイムの中に置くことです。

あなたはどう思いますか?あなたならどうしますか? 「純粋主義」アプローチを使用している一方の手は、それほど直接的ではないため、より処理能力が高くなりますが、コードの保守性と明快さがこれを補うでしょうか?

私はあなたの視点に感謝します! SimpleCursorAdapterにカーソルをチャッキングし、それは私の請求書 クラスがバイパスさの中に埋め込まれたビジネス・ロジックとして動作しないと私の方法 を持つ

答えて

1

...。

平文SimpleCursorAdapterを使用する場合。代わりに、SimpleCursorAdapterを拡張し、bindView()メソッドで必要なロジックを実装することができますが、これは既に知っていると思います(?!)。もう1つの選択肢は、SimpleCursorAdapterというプレーンを使用し、SimpleCursorAdapter.ViewBinderを使用して、SimpleCursorAdapterが処理できない余分なものを行う必要がある場合にデータをバインドします。

これが最適な方法ですか?

おそらくそうではありません。

あなたはどう思いますか?あなたならどうしますか?

あなたは(余分なものと一緒に)InvoiceクラスのみListViewで)ユーザーにそれを表示するために、私はInvoiceクラスを構築落とすだろうとAdapterに直接どんなロジックを実装を構築する場合、 ViewBinderなど(これはおそらく "純粋な"アプローチではありませんが、特にデータを持つカーソルが数百行のようになる場合は、これが最も効率的な方法です)。

コードの他の部分でInvoceクラスを使用する場合は、最初にカーソルからデータを取得します。

関連する問題