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

Posted

技术标签:

【中文标题】Android:如何使用UriMatcher切换多表、查询参数和活动?【英文标题】:Android: How to use UriMatcher to switch multiple tables, query parametes and activities? 【发布时间】:2012-07-23 03:11:33 【问题描述】:

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

在地图上显示一个城市的多个位置。 支持多个城市。 在单独的详细信息视图中显示位置的属性。 每个城市的位置属性不同

我想实现一个灵活的决策逻辑根据地图所在的位置在城市之间切换。这意味着,我依赖的初始信息是地图中心。这是理论上的工作流程。

    从地图中获取当前中心位置。 将位置翻译成城市urluri。 使用 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);
    

我不确定是使用一个还是多个内容提供者,因为我读过将所有数据库引用放在一个中可能会在将来同步数据时出现问题。

【问题讨论】:

【参考方案1】:

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

Developing android REST client applications, Virgil Dobjanschi, Google I/O San Francisco, 2010 ContentProvider and REST API, Benjamin Brombach, Android UserGroup Berlin, 2012

【讨论】:

以上是关于Android:如何使用UriMatcher切换多表、查询参数和活动?的主要内容,如果未能解决你的问题,请参考以下文章

android 一个Dialog中多页面切换,如何实现?

如何防止应用在android中切换多视图?

android 在PopupWindow里面如何切换外部的Activity?

Android组件化路由实践

Android如何使用工具栏中的按钮切换以使用片段打开/关闭导航抽屉

使用 RecyclerView 的多视图 - Kotlin(Android) - 无法切换视图