代码之家  ›  专栏  ›  技术社区  ›  Vincent Mimoun-Prat Krishnan

Android-构建特定风格的代码和视图

  •  1
  • Vincent Mimoun-Prat Krishnan  · 技术社区  · 10 年前

    我有一个图集应用程序,它有一些特定的部分,具体取决于所使用的图集。我们基本上将其描述为:

    • 一个显示地点的地图活动
    • 显示地点详细信息的一个地点详细信息活动

    我正在使用flavors构建与每个图集相对应的应用程序。例如:

    • 一家餐厅风味
    • 一个观光景点的味道

    每个图集都从不同的服务器URL获取数据,尽管API相同,但返回的JSON在处理地点细节时有一些特定部分:

    • 餐馆具有JSON属性,如opening_time、food_type。。。例如。:

      { "name": "", lat: "", lon: "", "opening_time": "", "food_type": "" }

    • 观光站点具有JSON属性,如access_type、altitude。。。例如。:

      { "name": "", lat: "", lon: "", "access_type": "", "altitude": "" }

    我使用Jackson进行JSON解析,并达到了以下目的:

    • 我完成了所有公共属性的解析,并在details活动中显示了它们。
    • 正确调用各个服务器(在Gradle中将URL指定为BuildConfig常量)。

    问题

    我对构建风格很陌生,我想知道哪种是处理特定风格代码的最佳方式(Jackson解析和详细视图)。我的意思是尽可能少地重复代码。

    到目前为止,我做了什么:

    对于视图,我觉得我可以简单地合并一个布局XML,它将被每个变量覆盖。这似乎起到了作用。

    对于java代码,我仍然很困惑。也许是这样

    class Place {
      @JsonProperty("name")
      String name;
    
      @JsonUnwrapped
      Details details;
    }
    

    但是,如何在不复制常见的Place代码和解析注释的情况下获得特定于口味的Details实现?即:

    • 餐厅风味用途 com.atlas.restaurant.Details
    • 观光风味用途 com.atlas.sightseeing.Details

    PS:我无法更改API和服务器代码。

    1 回复  |  直到 10 年前
        1
  •  1
  •   Vincent Mimoun-Prat Krishnan    10 年前

    没有答案,所以我是这样做的:

    1.创建 com.example.model.Place 主源中的类设置为

    class Place {
      @JsonProperty("name")
      String name;
    
      @JsonUnwrapped
      Details details;
    }
    

    2.创建 com.example.model.Details restaurant 风味源集合

    class Details {
          @JsonProperty("opening_time")
          String openingTime;
    }
    

    3.创建 com.example.model.Details sightseeing 风味源集合

    class Details {
          @JsonProperty("access_type")
          String accessType;
    }
    

    4.工作流程

    打开“构建变体”面板并选择您正在处理的风格。然后将选择适当的源集。当完成了一个味道后,您可以切换到另一个,如果缺少一个类,您将得到指示它的警告和错误。