7

現在、 と を使用しCursorAdapterていLoaderます。によってロードされたデータLoaderには場所が含まれています。近いものから遠いものへ順番に注文したいです。表示する距離は既に計算していますが、データを動的に並べ替える方法を見つける必要があります。

おそらくCursorLoader、データが変更されるたびに並べ替えを変更できますが、順序を変更するためだけに同じ SQL クエリを何度も実行するのは、私にはやり過ぎに思えます…</p>

でデータを動的にソートする方法はありますCursorAdapterか?

4

1 に答える 1

4

- CursorLoader のコンストラクターのsortOrder最後のパラメーターを使用する必要があります。

テーブルlatに緯度とlon経度の名前が付いた列があるとします。ユーザーの位置も緯度/経度userLatuserLon. 並べ替えのために、正確な距離を知る必要はありません。おおよその距離で十分です。そのためには、ピタゴラスの定理を使用できます。

sortOder次のようになりますabs(lat - userLat)* abs(lat - userLat) + abs(lon-userLon)*abs(lon-userLon)。この計算には、Sqlite 演算子でサポートされているもののみが含まれます。

userLat注 1:とuserLonがそれらの値に置き換えられる正しい文字列を提供するには、上記のコードを変更する必要があります。

注 2: この式を使用して正確な距離を計算することはできません。

于 2015-03-03T14:04:38.010 に答える