2

ラップトップから離れているため、コード例を作成できないため、前もってお詫び申し上げますが、質問に答えていただけるように十分に明確にできることを願っています。私は(SimpleCursorAdapterを介して)sqlite dbに支えられたListViewを持っています。機能を実装しようとしているので、リストには一度に db クエリから特定の数の要素のみが表示されます。これは、onCreate でデータベースからすべてのデータをロードし、リストの開始時に SimpleCursorAdapter の getCount メソッドを優先する要素数でオーバーライドすることで実現しました。さらに多くの要素をリストにロードするボタンもあります。これは、getCount が返すカウントを更新することによって行われます。

これはリストビューの行を追加する際にうまく機能しますが、ボタンをクリックした後、リストの内容に奇妙な動作が見られます。bindview メソッドで設定されているリスト要素が重複しており、要素の内容が正しくありません。これは getCount メソッドをオーバーライドすることと関係があると思います (「Load Next 25」関数を実行するより良い方法だと確信しています)。これは、db 結果セット全体を表示するだけではこの動作が見られないためです。そのメソッドをオーバーライドしないでください。

私の質問は、SimpleCursorAdapter を扱っているときに、getCount メソッドをオーバーライドすると、bindview メソッドでおかしな動作が発生する可能性があると思いますか? ListView をサポートする db クエリの結果を使用して、このタイプの機能を実装する最良の方法は何ですか?

事前に感謝します...必要に応じて、明日ラップトップに戻ったときにコードスニペットを提供できます。

4

1 に答える 1

5

別のクエリを使用して結果を取得するだけで、これをアーカイブできると思います。SQLite は、クエリの上位 n 個の結果を返すことができるLIMIT 演算子をサポートしています。

したがって、最初のクエリは次のようになります。SELECT [your columns] FROM [your table] LIMIT 25

そして、次の 25 件の結果をロードするボタンが押されたら、50 件を上限とする新しいクエリを作成し、changeCursor () メソッドを使用して結果のカーソルを SimpleCursorAdapter にバインドします。

于 2011-03-09T09:39:12.920 に答える