私はユーザー入力を行う目的で使用されるEditText
を持っています。ユーザーが特定のデータを入力すると、EditText
に関連付けられたテキスト変更リスナーは、リフレッシュされたカーソルを呼び出し、そのすぐ下に配置されたListView
に表示されている結果を更新しようとします。Sqliteデータベースのカーソルが更新されると、ListViewが頻繁にハングします
すべては問題ありません。しかし、検索クエリの変更が発生するたびに、結果のカーソルとListView
の更新には時間がかかります。たとえば、n秒です。 n秒の間、UIは停止します(呼び出しがあれば停止します)。リフレッシュされたカーソルが使用可能になり、ListView
全体が入力されるまで応答しません。
カーソルの更新を別のスレッドに入れようとしたとき、UIスレッドが他のスレッドの実行を許可していないため、UIに反映されませんでした。リストの更新などのUIアクティビティは、MainActivity
クラスのrunOnUiThread
を通じて実装する必要があります。
ユーザがEditTextを変更できるようにする方法や、更新されたカーソルがリストビューをリフレッシュすることができるようにするには、前者に影響を与えないでください。
私はCursorAdaptorを使用してbindView方法にしています私はすべてのことをやっています。しかし、依然として400行を返すクエリの結果をフェッチしている間は、他のUI機能がハングした状態にある時間がかかります。 –
textChangeListnerを使用しましたか? –
内容を反映するためにobseverを使用してください。 400レコードは関係ありません。制限と改ページを使用できます –