为java android的if条件提供更简单的方法
我试图改变标记颜色取决于谷歌地图中的类别id 有没有更干净的方法来创造条件为java android的if条件提供更简单的方法,java,Java,我试图改变标记颜色取决于谷歌地图中的类别id 有没有更干净的方法来创造条件 for (int i=0; i < response.body().size(); i++) { LatLng place = new LatLng(response.body().get(i).getLatitude(), response.body().get(i).getLongitude()); if(resp
for (int i=0; i < response.body().size(); i++) {
LatLng place = new LatLng(response.body().get(i).getLatitude(), response.body().get(i).getLongitude());
if(response.body().get(i).getCategory().equals("1")){
mMap.addMarker(new MarkerOptions()
.position(place)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
.title(response.body().get(i).getName())
.snippet(response.body().get(i).getCategory()))
.setTag(response.body().get(i).getSlug());
}
else if(response.body().get(i).getCategory().equals("2")){
mMap.addMarker(new MarkerOptions()
.position(place)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
.title(response.body().get(i).getName())
.snippet(response.body().get(i).getCategory()))
.setTag(response.body().get(i).getSlug());
} else {
mMap.addMarker(new MarkerOptions()
.position(place)
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_BLUE))
.title(response.body().get(i).getName())
.snippet(response.body().get(i).getCategory()))
.setTag(response.body().get(i).getSlug());
}
您应该查找以下内容以优化您的条件:
.title(response.body().get(i).getName())
.snippet(response.body().get(i).getCategory()))
.setTag(response.body().get(i).getSlug());
此外,在您的情况下,您总是重复response.body().get(i).getCategory()
。因此,如果两者都能被提取出来,您的代码将更具可读性和简洁性
见下文,如何
String category = response.body().get(i).getCategory();
BitmapDescriptorFactory bitmapColor = null;//or your default color
if("1".equals(category )){
bitmapColor = BitmapDescriptorFactory.HUE_AZURE;
}
else if("2".equals(category )){
bitmapColor = BitmapDescriptorFactory.HUE_YELLOW;
} else {
bitmapColor = BitmapDescriptorFactory.HUE_BLUE;
}
mMap.addMarker(new MarkerOptions()
.position(place) .icon(BitmapDescriptorFactory.defaultMarker(bitmapColor))
.title(response.body().get(i).getName())
.snippet(response.body().get(i).getCategory()))
.setTag(response.body().get(i).getSlug());
创建一个贴图
,将您的类别映射到色调。然后从中检索值或返回默认值
Map<String, Float> hueMapping = new HashMap<>();
hueMapping.put("1", BitmapDescriptorFactory.HUE_AZURE);
hueMapping.put("2", BitmapDescriptorFactory.HUE_YELLOW);
使用开关盒block@Stultuske可以我会尝试使用它。我还在学习基本的java。既然其他的都一样,为什么不
WhatEverIconClass图标;开关(类别){case“1”:icon=BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE);break;…}
然后就是。位置(位置)。图标(图标).
?@Thomas感谢您的建议。我正在学习基本java,所以你的建议非常有用。@wwwrrrxxx如果你还在学习基本java,请从这开始,不要尝试编写(android)应用程序。你的代码不是那种“仍在学习基础知识”的人应该为你的帮助而工作的代码。我将尝试实现您的代码。
Map<String, Float> hueMapping = new HashMap<>();
hueMapping.put("1", BitmapDescriptorFactory.HUE_AZURE);
hueMapping.put("2", BitmapDescriptorFactory.HUE_YELLOW);
for (int i=0; i < response.body().size(); i++) {
YourObject obj = response.body().get(i); // Replace YourObject with the type you're getting here
LatLng place = new LatLng(obj.getLatitude(), obj.getLongitude());
float hue = hueMapping.getOrDefault(obj.getCategory(), BitmapDescriptorFactory.HUE_BLUE);
mMap.addMarker(new MarkerOptions()
.position(place)
.icon(BitmapDescriptorFactory.defaultMarker(hue))
.title(obj.getName())
.snippet(obj.getCategory()))
.setTag(obj.getSlug()
);
}