我試圖以完全相同的方式修改兩個TextView。我以爲我可以給他們相同的id和findViewById()和setText()方法更改這些TextViews在兩行。但似乎只有一個TextView被改變了。具有相同ID的兩個XML元素
有沒有辦法做到這一點? 或者我必須爲每個元素創建不同的ID,通過findViewById()方法獲取每個元素並設置它的文本?
我試圖以完全相同的方式修改兩個TextView。我以爲我可以給他們相同的id和findViewById()和setText()方法更改這些TextViews在兩行。但似乎只有一個TextView被改變了。具有相同ID的兩個XML元素
有沒有辦法做到這一點? 或者我必須爲每個元素創建不同的ID,通過findViewById()方法獲取每個元素並設置它的文本?
查看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,
...
}
...
}
我看到它是我的問題的唯一解決方案。謝謝 – Seraphis 2010-11-10 11:56:52
您必須定義兩個不同的ID。沒有辦法使用與另一個相同的id的小部件,因爲這兩個小部件都是兩個不同的獨立小部件。
一個id對於每個View都是唯一的。所以不能共享。你可以做的是同時在代碼中提取兩個view id,並且修改文本。像if(id == id1 & & id == id2)然後編輯文本。
你的意思是「在代碼中提供兩個查看ID」?你能解釋一下哪種TextView會在這種情況下被修改嗎? – Seraphis 2010-11-10 11:45:03
你爲什麼要這樣做? – Macarse 2010-11-10 11:38:46
Android!= jQuery – Felix 2010-11-10 11:43:29
我爲什麼要這樣做? 我有兩個構建不同的元素(重力值不同的元素)的兩個LinearLayout。我認爲做兩種不同的佈局會更容易,並且在需要時使其中一個可見,另一個不見。 – Seraphis 2010-11-10 11:49:11