カーソルアダプタに裏打ちされたドラッグアンドドロップリストビューを使用しています。データベースを維持するために、ビューをドラッグするときにデータベースエントリの位置を更新しています。このために、SQLiteDatabase.rawQueryの従来のメソッドを使用し、更新操作が完了したら、notifyDataSetChangedを呼び出してcursoradapterのbindviewメソッドを呼び出します。エントリを再配置します。ただし、これはUIに遅れをとっており、アプリが応答しなくなります。データベースの単一のインスタンスを使用して、すべてのデータベース操作をAsyncTaskに移動しようとしました。スレッドがキューに入れられ、リストビューは各非同期タスクが完了するまで待機する必要があるため、これもUIに遅れをとっています。
私のListViewは、クエリが完了するのを常に待っています。
このシナリオの正しい実行方法は何ですか?CursorLoaderを使用すると、きびきびとしたUIが得られますか?
多くのアプリが効率的にドラッグアンドドロップを実行しているのを見てきましたが、それらのほとんどはアレイアダプターを使用しています。ただし、リストビューの入力が移動したため、データベースを更新する必要があります。
効率的な方法を教えてください...
編集:わかりました、非同期タスクがキューに入れられていないことがわかったので、構造を再実装しています。それらは並行性のために作られています。
尋ねるべき正しい質問は、データベースクエリをFIFO順にキューに入れる方法です。それに関するポインタはありますか?
よろしく、Parvaz Bhaskar