gpt4 book ai didi

Android - 构建特定于 flavor 的代码和 View

转载 作者:行者123 更新时间:2023-11-30 02:46:30 25 4
gpt4 key购买 nike

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

  • 一个显示地点的 map Activity
  • 一个地点详情 Activity 以显示地点详情

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

  • 一种餐厅 flavor
  • 一个景点 flavor

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

  • 餐厅具有 JSON 属性,例如营业时间、食物类型……例如:

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

  • 观光站点具有 JSON 属性,例如 access_type、海拔高度……例如:

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

我正在使用 Jackson 进行 JSON 解析并达到了这样的程度:

  • 我完成了所有通用属性的解析并在详细信息 Activity 中显示了它们。
  • 正确调用各个服务器(将 URL 指定为 Gradle 中的 BuildConfig 常量)。

问题

我是构建 flavor 的新手,我想知道哪种方法是处理 flavor 特定代码(Jackson 解析和详细 View )的最佳方式。我的意思是尽可能少的代码重复。

到目前为止我做了什么:

对于 View ,我觉得我可以简单地合并一个布局 XML,它将为每个变体覆盖。这似乎可以解决问题。

对于java代码,我还是比较迷茫。也许像

class Place {
@JsonProperty("name")
String name;

@JsonUnwrapped
Details details;
}

但是如何在不复制通用 Place 代码和解析注释的情况下获得特定于 flavor 的 Details 实现呢?即:

  • 餐厅 flavor 使用 com.atlas.restaurant.Details
  • 观光 flavor 使用com.atlas.sightseeing.Details

PS:我无法更改 API 和服务器代码的任何内容。

最佳答案

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

1。在主源集中创建 com.example.model.Place

class Place {
@JsonProperty("name")
String name;

@JsonUnwrapped
Details details;
}

2。为 restaurant flavor source set

创建一个 com.example.model.Details
class Details {
@JsonProperty("opening_time")
String openingTime;
}

3。为 sightseeing flavor 源集创建一个 com.example.model.Details

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

4。工作流程

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

关于Android - 构建特定于 flavor 的代码和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24904910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com