我正在构建一个android
应用程序,我有一个巨大的类别列表(~50)要显示给用户,我目前正在使用AutoCompleteTextView
它来允许用户选择。
但我的问题是我还有一个巨大的子类别列表(每个类别约 10 个),我必须显示并让用户选择一个,必须根据所选类别显示子类别。
所以除了写一个巨大的switch-case
或if-else
块,我该怎么做?
我不太确定,但可以使用反射来检查字段,R.java
然后获取包含子类别的资源的 id 吗?假设我当然使用正确的命名约定。
我正在构建一个android
应用程序,我有一个巨大的类别列表(~50)要显示给用户,我目前正在使用AutoCompleteTextView
它来允许用户选择。
但我的问题是我还有一个巨大的子类别列表(每个类别约 10 个),我必须显示并让用户选择一个,必须根据所选类别显示子类别。
所以除了写一个巨大的switch-case
或if-else
块,我该怎么做?
我不太确定,但可以使用反射来检查字段,R.java
然后获取包含子类别的资源的 id 吗?假设我当然使用正确的命名约定。
我认为您不应该使用布局文件中的所有类别和子类别来实现这一点。我会通过 Java 代码生成布局,这样我就可以轻松添加一些巧妙的技巧。
例如,您可以以编程方式添加“标记”值,以帮助您识别所选项目。
这是我基于@Jordi 回答的灵感的改进。
使用正则表达式的力量,我在这个巨大的XML
文件中做了一些修改。
想法是创建一个java.util.Map<String,String[]>
,键是类别,值是子类别。
所以我可以得到类别列表,map.keySet()
然后根据我可以做的用户选择map.get(selection)
来获取子类别列表。