2

SQLite データベースからデータを取得しています。通常、DB からアイテムを取得し、請求書のすべての詳細を保持するカスタム データ クラス「請求書」に入れます。Invoice 内には、請求書の残高 (Sales Invoice は請求書のクレジットを返し、Expense Invoice は請求書の借方を返します) やその他の会計固有の癖などを返すビジネス ロジックがあります。

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

なるべく分かりやすい内容を心がけたいと思います。そうは言っても、ロジックを実行するためにコントローラーでいくつかのロジックを一緒にハックするのではなく、この問題に対して「純粋主義者」のアプローチを採用したいと思います(たとえば、このオブジェクトを可能な限りMVCパラダイム内に保つなど)。

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

あなたの視点に感謝します!

4

1 に答える 1

1

...カーソルをSimpleCursorAdapterにチャックして、Invoiceクラスに埋め込まれたビジネスロジックがバイパスされるため、カーソルを操作することはできません。

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

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

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

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

Invoiceクラスを(余分なものと一緒に)ビルドしてユーザーに表示するだけListViewの場合(で)、クラスのビルドをやめて、Invoiceロジックなどに直接実装します(これはおそらく「純粋な」アプローチではありません) 、しかし、これが最も効率的な方法だと思います。特に、データを含むカーソルの行数が数百行になる場合はそうです)。AdapterViewBinder

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

于 2012-05-08T06:30:31.730 に答える