以下に示すように、場所の距離を含むリスト ビューがあります。
100
200
300
400
500
50
600
70
40
この場所の距離を昇順と降順の両方で並べ替える必要があります。それで、私がしたことは、アダプターをソートして、adapter.notifyDataSetChanged() を使用することでした。距離が 3 桁の数字、つまり 230、450、352、254 などであれば、すべて正常に機能します。しかし、場所の距離が 52、65、75 などの 2 桁の場合、以下に示すように間違ったソート値が得られます。
昇順の場合: ソート後、この順序を取得しています
100
200
300
400
500
600
50
60
70
降順の場合: ソート後、この順序を取得しています
70
60
50
600
500
400
300
200
100
ソート用の私のコードを以下に示します。
case R.id.action_sort_dist_fn:
adapter.sort(new Comparator<Place>() {
@Override
public int compare(Place lhs, Place rhs) {
return rhs.getPlaceDistance().compareTo(
lhs.getPlaceDistance());
};
});
adapter.notifyDataSetChanged();
break;
case R.id.action_sort_dist_nf:
adapter.sort(new Comparator<Place>() {
@Override
public int compare(Place lhs, Place rhs) {
return lhs.getPlaceDistance().compareTo(
rhs.getPlaceDistance());
};
});
Place.java
public class Place {
String placeName = "";
String placeDistance="";
String placeCategoryIcon;
public Place(String placeName, String placeDistance,
String placeCategoryIcon) {
this.placeName = placeName;
this.placeDistance = placeDistance;
this.placeCategoryIcon = placeCategoryIcon;
}
public String getPlaceName() {
return placeName;
}
public void setPlaceName(String placeName) {
this.placeName = placeName;
}
public String getPlaceDistance() {
return placeDistance;
}
public void setPlaceDistance(String placeDistance) {
this.placeDistance = placeDistance;
}
public String getPlaceCategoryIcon() {
return placeCategoryIcon;
}
public void setPlaceCategoryIcon(String placeCategoryIcon) {
this.placeCategoryIcon = placeCategoryIcon;
}
}