将每个资源的名称与 sqlite 数据库变量的内容进行比较

Posted

技术标签:

【中文标题】将每个资源的名称与 sqlite 数据库变量的内容进行比较【英文标题】:Compare names of every resource with the content of a variable of sqlite database 【发布时间】:2012-11-29 00:41:37 【问题描述】:

希望您能帮助我,我已经研究过我的案例,但没有找到好的答案。我想将变量的内容与所有现有资源的名称进行比较(如果可能,仅使用可绘制资源)。

简而言之:如何将变量的字符串内容与所有资源名称的列表进行比较,优先考虑可绘制资源?或者换句话说:如何获取所有资源名称的列表(包含字符串),只优先绘制可绘制资源?

案例: 我想显示基于给定类型的符号。此类型是从 SQLite 数据库中检索的。有许多符号存储为可绘制资源,它们都被命名为可能的类型。对于数据库中的每个存储类型,我想在列表中显示拟合符号。应该通过变量“type”和包含所有(可绘制)资源名称的列表之间的比较(通过 contains 方法)找出相等性。

示例: 数据库中有名为“A”、“B”和“C”的类型。在可绘制资源文件夹中是名称为“A”、“BX”和“S”的图形。比较应该导致这种情况,在列表中只有类型“A”与合适的可绘制符号“A”连接。类型“B”和“C”没有可能命名的可绘制资源,因此不应显示任何符号。

希望您能理解我的问题,并在此先感谢您的帮助。

【问题讨论】:

你已经做了什么?因为这是一个要求列表,而不是一个问题。 我已经对 *** 进行了更长时间的研究,通常是通过 google 进行的。这不是一份要求清单,这是一个如何进行比较的问题。我希望在编辑之后现在听起来更像是一个问题。 在这种情况下,我可能只是错过了您的问题。帮我一个忙并突出显示它,最好以问号结尾。 再次编辑并突出显示问题 【参考方案1】:

抱歉,我知道您正在寻找 Java 解决方案,但我没有在 *** 中找到任何解决 C# 和 Xamarin 问题的解决方案,所以如果您不介意,我将在此处留下我的 android 解决方案。

我在GitHub上找到了一个写得很好的类ReflectionUtils,就用了,做了这个方法来调用。

    private List<string> GetAllStrings()
    
        IEnumerable<FieldInfo> fields = ReflectionUtils.GetAllFields(typeof(Resource.String));
        List<string> list = new List<string>();
        using (var enumerator = fields.GetEnumerator())
        
            try
            
                while (enumerator.MoveNext())
                
                    list.Add(enumerator.Current.Name);
                
             catch (Exception e)
            
                // Handle exception.
            
        
        return list;
    

【讨论】:

【参考方案2】:

或者换句话说:如何获取所有的列表(包含字符串) 资源名称,只优先绘制可绘制资源?

这可能就是你想要的:

Field[] fields = R.drawable.class.getFields();
String[] allDrawablesNames = new String[fields.length];
for (int  i =0; i < fields.length; i++)            
    allDrawablesNames[i] = fields[i].getName();

【讨论】:

非常感谢,这正是我一直在寻找的,我只是将 String[] 更改为 List 以便我可以轻松地使用 contains() 方法进行比较。 这会返回键...如何获取值?

以上是关于将每个资源的名称与 sqlite 数据库变量的内容进行比较的主要内容,如果未能解决你的问题,请参考以下文章

Sqlite 使用

使用jQuery将具有特定类的每个div的名称保存到变量中

本地 SQLite 与远程 MongoDB

SQLite python - 将值转换为变量

我如何使用一个变量的内容来创建另一个变量的名称? [重复]

使用 sqlite 查找连续重复的数量