我想阅读您对如何解决以下问题的想法。以下是我正在处理的应用程序的基本要求。
- 在地图上显示一个城市的多个位置。
- 支持多个城市。
- 在单独的详细信息视图中显示位置的属性。
- 每个城市的位置属性不同。
我想实现一个灵活的决策逻辑,根据地图所在的位置在城市之间切换。这意味着,我依赖的初始信息是地图中心。这是理论上的工作流程。
- 从地图中获取当前中心位置。
- 将位置翻译成城市url和uri。
- 使用 url 通过 HTTP 下载位置。
- 将位置存储在本地数据库中。由于位置属性不同,每个城市一张表。
- 使用 uri 从内容解析器加载缓存或下载的数据。
- 创建覆盖项目并包括uri 引用和唯一的 id。
- 点击位置时打开详细信息视图。
- 详细信息视图应呈现城市特定的位置属性。
- 位置属性再次通过基于传递的 uri 和唯一 ID 的内容解析器加载。
问题:
- 我对如何使用类切换城市、查询参数(例如列名
UriMatcher
)特别感兴趣。 - 您会为每个城市准备一个详细视图吗?或者您是否看到任何基于可用属性信息交换文本字段、标签、.. 的实用解决方案?
为了说明不同的属性,这里有两个示例城市和一个内容提供商。
例子:
public class DatabaseParis {
public static final class Contract {
public static final String COLUMN_LATITUDE = "latitude";
public static final String COLUMN_LONGITUDE = "longitude";
public static final String COLUMN_NAME = "name";
}
而另一个城市...
public class DatabaseDenver {
public static final class Contract {
public static final String COLUMN_LATITUDE = "lat";
public static final String COLUMN_LONGITUDE = "lon";
public static final String COLUMN_HEIGHT = "height";
public static final String COLUMN_DIAMETER = "diameter";
}
和内容提供商...
public class CustomContentProvider extends ContentProvider {
public static final class Contract {
public static final Uri URI_PARIS = Uri.parse("content://" + AUTHORITY + "/cities/paris");
}
private static final String AUTHORITY = "com.example.cities.locations";
private static final int URI_CODE_PARIS = 0;
private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
static {
URI_MATCHER.addURI(AUTHORITY, "cities/paris", URI_CODE_PARIS);
}
我不确定使用一个或多个内容提供程序,因为我读过将所有数据库引用放在一个中可能会在将来同步数据时出现问题。