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

相关问题