2016-09-27 2 views
2

latitudelongitudeというフィールドを持つRealmObjectがあり、そのようなオブジェクトのRealmListまたはRealmResultがあるとします。たとえば、あなたの現在のLocation?で距離を並べ替えるのですか?心に生まれているRealmListまたはRealmResultを距離別にどのように並べ替えますか?

アイデアは以下のとおりです。

  1. は、フィールドcalculatedDistanceを追加し、すべてのオブジェクトを反復処理し、それを設定します。この方法の問題は、次にcopyToRealmOrUpdate(..)に電話するときに、このフィールドをnullで上書きするということです。
  2. リストまたは結果に自分自身のComparatorという名前を付けても、 "外部者"によってソートされている管理対象RealmListまたはRealmResultの動作は、どこにも記載されていません。
  3. groupingsbetween(..)などを使用して実際に高度なクエリを実行しますが、私は良い考えを思いつくことはできません。

Android搭載のユーザーは誰でも良い解決策を見つけましたか?

+0

ような何かを行うことができます[RealmGeoPoint](https://github.com/realm/realm-java/issues/1772)私が知る限り、ロードマップ上にあるが、正確には優先順位ではない。そこにリンクされた迅速なソリューションがありますが、私は本当にスウィフトを得ていません。 – EpicPandaForce

+0

@EpicPandaForceありがとう、私は私の投票を追加しました。私は本当の意味での解決策を見つけたいと思っています。私はSwiftコードを見て、それは私が信じているJavaの土地では同等のものを持っていない拡張を使っています。 –

答えて

1

これは実際には効率的な方法でジオ空間のサポートが必要です。

今は、Realmからデータをコピーし、ワーカースレッドで手動で処理することをお勧めします。あなたはHandlerThreadでそれを実装する場合

あなたは私が知っているすべては、この

RealmResults<City> results = realm.where(City.class).findAllAsync(); 
results.addChangeListener(new RealmChangeListener<Results<City>>() { 
    @Override 
    public void onChange(RealmResults<City> cities) { 
    List<City> standaloneCities = realm.copyFromRealm(cities); 
    doManualSorting(standaloneCities); 
    sendToUiThread(standaloneCities); 
    } 
}); 
+0

も参照してくださいhttps://github.com/realm/realm-java/issues/1772 – geisshirt

+0

@Christain Melchior、私は30Kデータの検索結果をソートするために同じことを続けましたが、real.copyFromRealm(都市これに迅速に対応していただければ幸いです。 – Rajendra

関連する問題