Android:如何使用UriMatcher切换多个表、查询参数和活动?

Android:如何使用UriMatcher切换多个表、查询参数和活动?,android,uri,multiple-tables,android-contentresolver,Android,Uri,Multiple Tables,Android Contentresolver,我想了解一下你对如何解决以下问题的看法。以下是我正在处理的应用程序的基本要求 在地图上显示一个城市的多个位置 支持多个城市 在单独的详细信息视图上显示位置的属性 每个城市的位置属性不同 我想实现一个灵活的决策逻辑,根据地图所在的位置在城市之间切换。也就是说,我所依赖的初始信息是地图中心。这是理论工作流程 从地图中获取当前中心位置 将位置转换为城市url和uri 使用url通过HTTP下载位置 将位置存储在本地数据库中。每个城市一个表,因为位置属性不同 使用uri从内容解析器加载缓存或下载的数

我想了解一下你对如何解决以下问题的看法。以下是我正在处理的应用程序的基本要求

  • 在地图上显示一个城市的多个位置
  • 支持多个城市
  • 在单独的详细信息视图上显示位置的属性
  • 每个城市的位置属性不同
我想实现一个灵活的决策逻辑,根据地图所在的位置在城市之间切换。也就是说,我所依赖的初始信息是地图中心。这是理论工作流程

  • 从地图中获取当前中心位置
  • 将位置转换为城市urluri
  • 使用url通过HTTP下载位置
  • 将位置存储在本地数据库中。每个城市一个表,因为位置属性不同
  • 使用uri从内容解析器加载缓存或下载的数据
  • 创建覆盖项并包括uri引用唯一id
  • 点击某个位置时打开详细信息视图
  • “详细信息”视图应呈现特定于城市的位置属性
  • 根据传递的uri和唯一id,通过内容解析器再次加载位置属性
  • 问题:

    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";
        }
    
  • 我特别感兴趣的是如何使用
    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);
        }
    

    我不确定是否使用one多个内容提供商,因为我了解到,在将来同步数据时,将所有数据库引用放入一个可能会出现问题。

    我想处理这种情况的人应该使用以下信息源