我正在尝试根据谷歌地图中的类别 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(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());
}
是这样的吗?
.position(place)
if(condition) {
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
}
...
最佳答案
那么您应该查找以下内容以优化您的条件:
- 在所有条件下重复一组代码。
- 在所有条件下重复一组条件部分。
所以,如果我在下面的代码中遵循上面的代码始终保持不变:
.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());
关于java - 为 java android 的 if 条件做更简单的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58623130/