我必须通过Object的值对ArrayList进行排序。我以前计算过的距离值。这可以完美地工作,但是如果我尝试将其升序排序,则较早的智能手机会显示与实际距离不同的值,但是距离计算正确。我认为这是因为我的排序方法。因此,无论当前安装了哪种操作系统,我如何都可以对该数组列表进行排序。这是我的对象:
public class SellerObject implements Serializable {
private String imageUrl, lat, lng, name, plz, id, size, price, typ, url;
private Float distance;
public SellerObject(String imageUrl, String lat, String lng, String name, String plz, String id, String size, String price, String typ, String url, Float distance) {
this.imageUrl = imageUrl;
this.lat = lat;
this.lng = lng;
this.name = name;
this.plz = plz;
this.id = id;
this.size = size;
this.price = price;
this.typ = typ;
this.url = url;
this.distance = distance;
}
public String getTyp() {
return typ;
}
public void setTyp(String typ) {
this.typ = typ;
}
public SellerObject() {
}
public String getImageUrl() {
return imageUrl;
}
public void setImageUrl(String imageUrl) {
this.imageUrl = imageUrl;
}
public String getLat() {
return lat;
}
public void setLat(String lat) {
this.lat = lat;
}
public String getLng() {
return lng;
}
public void setLng(String lng) {
this.lng = lng;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPlz() {
return plz;
}
public void setPlz(String plz) {
this.plz = plz;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public Float getDistance() {
return distance;
}
public void setDistance(Float distance) {
this.distance = distance;
}
public String getSize() {
return size;
}
public void setSize(String size) {
this.size = size;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
}
这是我的排序方法:
private void SortUser(ArrayList<SellerObject> newSeller) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newSeller.sort(Comparator.comparing(SellerObject::getDistance));
}
loadingview.setVisibility(View.INVISIBLE);
sellerAdapter sa = new sellerAdapter(getActivity(), newSeller, mlastLocation);
sellerrv.setAdapter(sa);
}
答案 0 :(得分:3)
仅当使用的Android版本为牛轧糖或更高版本时,您才对List<SellerObject>
进行排序。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newSeller.sort(Comparator.comparing(SellerObject::getDistance));
}
答案 1 :(得分:1)
只有在Android操作系统是牛轧糖或更高版本的情况下,您使用的AllarList不会在使用旧操作系统的手机中进行排序,并且您必须在ArrayList必需的API 24或更高版本中将其作为排序功能,以便解决游览问题,您还必须处理较旧的版本,Collections.sort将是您的理想解决方案。
因此,整个排序功能将如下:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
newSeller.sort(Comparator.comparing(SellerObject::getDistance));
}else{
Collections.sort(newSeller, new Comparator<SellerObject>() {
@Override
public int compare(SellerObject item1, SellerObject item2) {
return item1.getDistance.compareTo(item2.getDistance);
}
});
}