2010-11-10 94 views
8

我試圖以完全相同的方式修改兩個TextView。我以爲我可以給他們相同的id和findViewById()和setText()方法更改這些TextViews在兩行。但似乎只有一個TextView被改變了。具有相同ID的兩個XML元素

有沒有辦法做到這一點? 或者我必須爲每個元素創建不同的ID,通過findViewById()方法獲取每個元素並設置它的文本?

+0

你爲什麼要這樣做? – Macarse 2010-11-10 11:38:46

+1

Android!= jQuery – Felix 2010-11-10 11:43:29

+0

我爲什麼要這樣做? 我有兩個構建不同的元素(重力值不同的元素)的兩個LinearLayout。我認爲做兩種不同的佈局會更容易,並且在需要時使其中一個可見,另一個不見。 – Seraphis 2010-11-10 11:49:11

回答

5

查看ID是純整數,所以你可以簡單地有一個你想改變的ID數組。例如:

int[] ids = { R.id.text1, R.id.text2, ... }; 
for (int id: ids) { 
    TextView tv = (TextView) findViewById(id); 
    tv.setText("Hello, World!"); 
} 

當然,最好將ids作爲靜態最終類成員。 I .: .:

public class MyActivity extends Activity { 
    private static final int[] textViewIDs = { 
     R.id.text1, 
     R.id.text2, 
     ... 
    } 
    ... 
} 
+0

我看到它是我的問題的唯一解決方案。謝謝 – Seraphis 2010-11-10 11:56:52

0

您必須定義兩個不同的ID。沒有辦法使用與另一個相同的id的小部件,因爲這兩個小部件都是兩個不同的獨立小部件。

0

一個id對於每個View都是唯一的。所以不能共享。你可以做的是同時在代碼中提取兩個view id,並且修改文本。像if(id == id1 & & id == id2)然後編輯文本。

+0

你的意思是「在代碼中提供兩個查看ID」?你能解釋一下哪種TextView會在這種情況下被修改嗎? – Seraphis 2010-11-10 11:45:03

相關問題