1

前もって感謝します。

ユーザーがログインしてデータベースからすべてのレビューを表示できるカーレビューアプリケーションを開発しています。すべてのデータは、最初に MYSQLdatabase に格納されています。json を使用して MYSQLdatabase と SQLiteDatabase に接続しています。しかし、問題は、アプリケーション画面にログインした後、巨大なno. のデータがサーバーから送信され、SQLite データベースに挿入されています。

その後、データベースから取得してアプリケーション画面にリスト ビューで表示する際に、すべてのデータをリスト ビューで表示するのに時間がかかります。その場合、SimpleCursorAdapter を使用してデータベースからすべてのデータを取得しています。

ページネーションなど、データの取得を高速化する方法はありますか。ソースコードを教えてください。

4

4 に答える 4

3

次のようなものを使用できます。

  • ページ1:

    SELECT * FROM YOUR_TABLE LIMIT 20 OFFSET 0
    
  • ページ2:

    SELECT * FROM YOUR_TABLE LIMIT 20 OFFSET 20
    

参照: http://sqlite.org/lang_select.html

于 2013-02-21T07:25:57.567 に答える
3

SimpleCursorAdapters と共に非同期タスクの概念を使用できます。

「AsyncTask を使用すると、UI スレッドを適切かつ簡単に使用できます。このクラスを使用すると、スレッドやハンドラーを操作することなく、バックグラウンド操作を実行し、UI スレッドで結果を発行できます。」

できることは次のとおりです。

1) 最初のクエリで最初の 10/15 アイテムのみを取得します。2) ユーザーが最初の 10/15 アイテムをチェックアウトしている間に、バックグラウンド タスクとして別のクエリを起動します。

これにより、ユーザーエクスペリエンスが確実に高速化されます

于 2013-02-21T07:26:38.920 に答える
1

誰かがすでに実装している場合は、ページネーションを実装する方法に関するロジック/サンプルソースコードを提供してください。

CommonsWareを参照してくださいEndlessAdapter

于 2013-02-21T07:28:04.973 に答える
1

LIMITfrom キーワードを使用すると、MYSQLページネーションを実現できます。

LIMITクエリによって返される行数を制御できます。

例:

最初の 10 件のレコードを表示する

SELECT * FROM Student LIMIT 10    //for first time

10 から 20 の間の行を表示するには

SELECT *FROM Student LIMIT 9, 10 //after showing the records first time

LIMITも働きSQLiteDatabaseます

于 2013-02-21T07:25:27.407 に答える