我有以下數組對象填充的ListActivity:如何使用雙屬性對數組進行排序?
public class VideoLocation {
public String deleted_at = null;
public int documentary_video_length = -1;
public int id = -1;
public double latitude = 0d;
public double longitude = 0d;
public int position = -1;
public String updated_at = null;
public String name = null;
public String text = null;
public String documentary_video_url = null;
public String documentary_thumbnail_url = null;
public String audio_text_url = null;
public Footage[] footages = null;
public VideoLocation(){
}
我需要根據位置和用戶之間的距離ListActivity進行排序。 我沒有在按字母順序排序的「名」字符串任何麻煩,我用這個方法:
public void sortAZ(){
Arrays.sort(videoLocations, new Comparator<VideoLocation>() {
@Override
public int compare(VideoLocation lhs, VideoLocation rhs) {
return lhs.name.compareTo(rhs.name);
}
});
}
,但不能用於「雙」的數據類型,這是我需要的「緯度的方法'和'經度'。此外,對象VideoLocation沒有屬性「距離」。
即使我可以計算位置和用戶之間的距離,我該如何排序呢?
UPDATE
這是最後的解決方案!就像一個魅力
public void sortNearby(){
Arrays.sort(videoLocations, new Comparator<VideoLocation>() {
@Override
public int compare(VideoLocation lhs, VideoLocation rhs) {
double lat = location.getLatitude();
double lng = location.getLongitude();
double lat1 = lhs.latitude;
double lng1 = lhs.longitude;
double lat2 = rhs.latitude;
double lng2 = rhs.longitude;
double lhsDistance = countDistance(lat,lng,lat1,lng1);
double rhsDistance = countDistance(lat,lng,lat2,lng2);
if (lhsDistance < rhsDistance)
return -1;
else if (lhsDistance > rhsDistance)
return 1;
else return 0;
}
});
}
public double countDistance(double lat1,double lng1, double lat2, double lng2)
{
Location locationUser = new Location("point A");
Location locationPlace = new Location("point B");
locationUser.setLatitude(lat1);
locationUser.setLongitude(lng1);
locationPlace.setLatitude(lat2);
locationPlace.setLongitude(lng2);
double distance = locationUser.distanceTo(locationPlace);
return distance;
}
我剛剛更新了我的問題,請看看..謝謝 – hectichavana 2012-04-27 14:53:15
正如Igor F.所說,你的新代碼是錯誤的:你需要計算'lhs'和'rhs'的經度和緯度(在你' ),然後調用'countDistance(lat,lng,lat1,lng1)'和'countDistance(lat,lng,lat2,lng2)'(注意:'lat1'),然後調用另一個的緯度和經度。 'lng'1還不存在,但是當你同時計算lats和兩個lng時!)。 – 2012-04-27 15:10:03
我真的不知道它,你能提供一個改進或更正我剛發佈的代碼嗎?這將有所幫助。 Thx – hectichavana 2012-04-27 15:26:24