2016-10-15 17 views
0

私の友人からは、CursorAdapterがMVCルールに従わないと聞きましたが、モデルからではなくビューからデータベースに直接値を取ります。さらに、彼は毎回ユーザーがリストビューで項目を反復し、CursorAdapterはdbsクエリーを何度も実行すると言いました。その結果、CursorAdapterは頻繁には使用されません。 私はこの声明について非常に興味があります、誰でも私を助けることができますか?彼は正義か間違っていますか?そして彼が正しいのであれば、私は代わりに何を使えますか?ListViewにCursorAdapterを使用しない場合

+0

絶対に間違っている、それはGoogleの人たちによって使用されている可能な限り - のいずれか 'CursorAdapter'または' ResourceCursorAdapter'または 'SimpleCursorAdapter' – pskink

+0

は、私はあなたが私の一日を作った、 –

答えて

1

CursorAdapter ...ではない、あなたのモデルがあることを定義するかに依存モデル

を通じて、ビューに直接データベースからの値をとります。 Cursorモデルとすることができます。この場合、CursorAdapterはモデルからデータを取り出してビューに適用します。

あなたの友人は、カスタムJavaクラスのセットとして定義されたモデルを考えているかもしれません。その場合、CursorAdapterはこれらのクラスについて何も知らないでしょう。

彼は、リストビューを経由して毎回ユーザー反復項目を述べ、CursorAdapterが再びDBSクエリを実行し、再び

そうでもありません。 CursorAdapterは、データベースクエリの実行について何も知らない。

私が考えることができる唯一のシナリオは、クエリが1MB以上の大きな結果セットを持っている場合に、友人が説明するものと似ています。その場合、Cursorは結果セット全体を保持しません。通常の方法です。代わりに、結果の一部が保持され、ユーザがCursorの内容をスクロールした場合、CursorはデータベースI/Oをトリガしてより多くの結果を取得します(以前のものを取り除き、保持されるメモリの総量を最小限に抑えます)。 Cursor)。その結果、

、CursorAdapterが頻繁に使用されることはありません

私はあまり頻繁にArrayAdapterであるよりも、使用されていることを言うだろう、と多くの開発者が移動の両方が、一般的に好意から下落していますRecyclerViewおよびRecyclerView.Adapter

MVC/MVP/MVVMアーキテクチャの一部として「本当の」モデル(およびおそらくビューモデル)を持っているのではなく、Cursorをモデルとして使用しています。確かに、私が大きなプロジェクトから聞いたことは、Cursorが、CursorAdapterまたはRecyclerView.Adapterで直接使用されるのではなく、他のモデルオブジェクトの投入に主に使用されることを示しています。しかし、それは本当に多くのアプリケーションに依存します。簡単なアプリケーションでは、特定のGUIアーキテクチャを厳密に遵守する必要はなく、「簡単なアプリケーション」と「より大きなプロジェクト」の境界線を定義することは困難です。

もし彼が正しいのであれば、私は代わりにどのようなアダプタを使用できますか?あなたの友人がモデルのJavaオブジェクトを望んでいる場合、一般的には、モデルオブジェクトのコレクションで取得する方法を知っているArrayAdapterまたはBaseAdapterを使用することになり

。または、RecyclerViewレルムでは、モデルオブジェクトのコレクションの構造について知っているRecyclerView.Adapterを使用します。

+0

はそんなにありがとうそれを得た、仲間、ありがとうございました。 –

関連する問題