java - 为 java android 的 if 条件做更简单的方法

标签 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(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))
}
...

最佳答案

那么您应该查找以下内容以优化您的条件:

  1. 在所有条件下重复一组代码。
  2. 在所有条件下重复一组条件部分。

所以,如果我在下面的代码中遵循上面的代码始终保持不变:

.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/

相关文章:

java - 帮助我在 JPA 中选择查询时遇到问题

java - 如何从函数返回 JButton 并使用它在 java 中的不同类中执行操作?

java - 将值从第三个 Activity 传递到第一个 Activity

java - 计算输入字符串中 "\n"出现的次数

java - 多个 newSingleThreadExecutor 与 ExecutorService 的 newFixedThreadPool

java - 在 Java 中从 Base 64 字符串转换

java - 打包到jar时配置log4j.properties文件位置

Java-Metro,从 glassfish 服务器端,我没有成功强制发送客户端 ssl 证书?

java - Camera 2 API 问题,图像始终以横向模式显示

java - 不应该捕获 NPE 但不知道如何处理 NULL