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