【问题标题】:Initializing variable in for-loop在for循环中初始化变量
【发布时间】:2012-01-02 11:37:27
【问题描述】:

我有这样的代码:

TextView wyniszczenie_zakres_bmi = (TextView)t.findViewById(R.id.wyniszczenie_zakres_bmi);
TextView wychudzenie_zakres_bmi = (TextView)t.findViewById(R.id.wychudzenie_zakres_bmi);
TextView niedowaga_zakres_bmi = (TextView)t.findViewById(R.id.niedowaga_zakres_bmi);

我可以这样做吗?

List<String> arStan = new ArrayList<String>();
arStan.add("wyniszczenie");
arStan.add("wychudzenie");
arStan.add("niedowaga");

for(String s : arStan){
    TextView s + _zakres_bmi = (TextView)t.findViewById(R.id. + s + _zakres_bmi);
}

我知道这不起作用,但有什么解决办法吗?

【问题讨论】:

  • 不使用反射。
  • 我同意@Matt。作为替代方案,您可以使用数组或 TextView 列表。或者一个 Map,其中枚举是键,关联的 TextViews 是值。

标签: java android variables for-loop initializing


【解决方案1】:

试试这个:

List<String> arStan = new ArrayList<String>();
arStan.add("wyniszczenie");
arStan.add("wychudzenie");
arStan.add("niedowaga");

for(String s : arStan) {
    int myId = getResources().getIdentifier(s + "_zakres.bmi", "id", getPackageName());
    TextView myTextView = (TextView)t.findViewById(myId);
    // Do something with myTextView
}

如果您需要保存 textView 引用以供以后使用,而不是立即对其进行操作,则在分配 myTextView 后将其放入数组或哈希表中。

Hashtable textViews = new Hashtable<String, TextView>();
List<String> arStan = new ArrayList<String>();
arStan.add("wyniszczenie");
arStan.add("wychudzenie");
arStan.add("niedowaga");

for(String s : arStan) {
    int myId = getResources().getIdentifier(s + "_zakres.bmi", "id", getPackageName());
    TextView myTextView = (TextView)t.findViewById(myId);
    textViews.put(s + "_zakres.bmi", myTextView);
}

// When you need to get one of the TextViews:
TextView tv = textViews.get("niedowaga_zakres.bmi");
// Do something with tv.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多