2017-02-22 62 views
0

新的Android/Java編碼器。試圖在Android應用程序中複製我在MS-Access中構建的項目。Java - 動態構建文本視圖ID

我有類似的命名TextViews佈局,像text10,text12,等等。在MS-訪問,我可以動態地收集引用建立這些名字:

For X = 10 To 15 
    Me.Controls("text" & X) = Null 
Next 

沒有要求陣列。 Java中的哪些結構可以實現相同的功能?

+0

使用元素的數組或列表。即使你可以按照你所說的方式去做,這是一個可怕的想法。不要在java中遵循訪問編程風格;有沒有人再使用VBA的原因 – nhouser9

+0

也許有一天我會學習這一點,但現在找不到清楚的解釋如何用xml佈局中定義的TextView填充數組。 – June7

回答

2

您可以在運行時從res名稱獲取res id。所以,如果你的TextView有ID「text1」中,您可以通過使用得到的整數ID:

int id = getResources().getIdentifier("text1", "string", getPackageName()); 
TextView view = findViewById(id); 

但只能作爲最後的手段這樣做,這是容易出錯的,緩慢的,有點反模式。

編輯由OP:不管什麼名稱參數總是返回0,但標記爲答案,因爲它導致下面的代碼完全按照我想要的,反模式或不。
TextView v = (TextView) findViewById(getResources().getIdentifier("tv" + a[i], "id", getPackageName()));

0

取而代之的是TextViewId領域使用其Tag場。 String tag = (String)textView.getTag()textView.setTag(Object tag)tag instanceof String

那麼你可以找到TextView通過Tag

+0

只是得到錯誤:無法解析符號'textView' – June7

+0

你是認真的嗎? textView只是一個變量名,顯然你必須使用你自己的 – CrowsNet

+0

是的,我明白,並得到那個錯誤後,試圖聲明和啓動,但也沒有工作。我會發起什麼? Timo Ohr的回答解決了這個問題,現在正在進行討論。但是非常感謝你的努力。 – June7