我正在编写一个Android应用程序,我需要在特定活动中访问大量变量(基本上,这是一个小型游戏的“数据模型”)。目前,我将它们存储在一个巨大的“容器”类中,因此我可以轻松地引用它们而不会污染我的活动类。例如:
public class Model
{
private int a;
private String b;
private float c;
...
public int getA()
{
return a;
}
public void setA(int a)
{
this.a = a;
}
public String getB()
{
return b;
}
public void setB(String b)
{
this.b = b;
}
public float getC()
{
return c;
}
public void setC(float c)
{
this.c = c;
}
...
}
正如你所看到的,它们是不同类型的,并且都有吸气剂和制定者。但是像这样存储起来很麻烦。我也想迭代变量组,但是使用这种平坦的getter / setter格式我真的不能那样做。
我知道Android的资源系统,但它似乎不适合这种情况,因为变量不是应用程序范围/全局变量。它们仅在此特定活动的生命周期中存在,并且每次活动开始时都以编程方式生成。
我正在考虑将它们全部放入Map<String, Object>
结构中,我可以通过String键引用每个变量。这样就不需要拥有包含大量getter和setter的容器类,因为我可以在地图上调用put
或get
。但是每当我想从地图中获取一个值时,我都必须转换为预期的类型。我不喜欢那种声音。
有人有更好的解决方案吗?是否有类似Android的资源系统可以在更小,更临时的规模上使用?
答案 0 :(得分:0)
我不确定为什么,如果这些是为了模拟Activity的状态,你不仅仅为每个模型对象定义了实际的类。那是我的建议。你在这里采用一种非常类似于C的程序方法,只需将它们一起放在一个类中。此外,由于您的代码不显示静态getter和setter,您必须以某种方式创建和访问容器类,不是吗?基于这个小片段,没有更多的上下文,很难给你一个更好的答案。
答案 1 :(得分:0)
您可以为每个活动定义自定义xml资源文件。这些文件存储在/ xml文件夹中与/ src文件夹相同的级别。使用Resources类加载它们。
或者看一下这个问题:Dynamic Resource Loading Android