如何解决自定义对象非视图样式?的XML集合
我需要多个对象的多个集合,这些对象包含一个字符串(因为它是本地化的,所以是id),一些数字和一些布尔值。当前,我以静态方式创建它们:
private static final Task[] easyTasks = {
(new Task(R.string.task_eaa,Task.EASY)),(new Task(R.string.task_eab,Task.EASY).setMinCount(4)),(new OtherTask(R.string.task_eac,...
}
private static final Task[] mediumTasks = {
(new Task(R.string.task_maa,Task.MEDIUM)),(new Task(R.string.task_mab,Task.MEDIUM).setSwappable(true)),(new Task(R.string.task_mac,(new Task(R.string.task_mad,Task.MEDIUM).setSwappable(true).setScale(3).setMinCount(3)),...
}
这很烦人且难以维护,因为将来我会添加更多任务。我想到了一种更灵活,更优雅的方法来执行此操作:我想在一个xml文件中创建所有这些任务。
我在Google上搜索了一些如何在xml中创建类结构的方法,然后发现了这种方式:
<declare-styleable name="TaskStylable">
<attr name="task_text" format="reference"/>
<attr name="task_genders">
<enum name="doesnt_matter" value="0"/>
<enum name="requires_female" value="1"/>
<enum name="requires_male" value="2"/>
<enum name="requires_both" value="3"/>
</attr>
<attr name="task_mincount" format="integer"/>
<attr name="task_swappable" format="boolean"/>
<attr name="task_scale" format="float"/>
</declare-styleable>
我希望能够像这样创建所有任务:
<array name="easyTasks">
<Task
task_text="@string/task_eaa"/>
<Task
task_text="@string/task_eab"
task_mincount="4"/>
<!-- OtherTask Could just be a Task with this way of initialization -->
<Task
task_text="@string/task_eac"/>
...
</array>
<array name="mediumTasks">
<Task
task_text="@string/task_maa"/>
<Task
task_text="@string/task_mab"
task_swappable="true"/>
<Task
task_text="@string/task_mac"/>
<Task
task_text="@string/task_mac"
task_swappable="true"
task_scale="3"
task_min_count="3"/>
...
</array>
不幸的是,我无法使它正常工作,而且看起来似乎没有这么优雅。
那我该怎么做呢?甚至没有正确的方法可以在xml中实现类似枚举的对象列表?
(当然,我需要以某种方式解析Java中的该数组。我已经设法解析了一个字符串数组数组,但是我不知道如何解析此自定义样式。但这是解决此问题之后的另一个问题)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。