java - 更改具有相同标签/ID 的多个 TextView 中的文本

标签 java android

我在尝试使用相同文本更改时设置多个 TextView 时遇到问题。我有多个需要设置相同值的 TextView。我一直在做的只是使用每个 ID 并独立设置每个 ID 的值,但这似乎不是很有效。基本上我正在做的是:

((TextView)findViewById(R.id.text_1_1)).setText("text 1");
((TextView)findViewById(R.id.text_1_2)).setText("text 1");
((TextView)findViewById(R.id.text_2_1)).setText("text 2");
((TextView)findViewById(R.id.text_2_2)).setText("text 2");
.....
((TextView)findViewById(R.id.text_5_1)).setText("text 5");
((TextView)findViewById(R.id.text_5_2)).setText("text 5");

我不想将每个 TextView 存储为类中的全局变量,因为数量太多了。是否有首选方法或更简单的方法来实现此目的?

最佳答案

您可以使用标签对 View 进行分组:只需对同一组的 TextView 使用相同的标签(例如 group1)。然后调用 fix(yourRootView, "group1", "the_new_value");

    protected void fix(View child, String thetag, String value) {
        if (child == null)
            return;

        if (child instanceof ViewGroup) {
            fix((ViewGroup) child, thetag, value);
        }
        else if (child instanceof TextView) {
            doFix((TextView) child, thetag, value);
        }
    }

    private void fix(ViewGroup parent, String thetag, String value) {
        for (int i = 0; i < parent.getChildCount(); i++) {
            fix(parent.getChildAt(i), thetag, value);
        }
    }
    private void doFix(TextView child, String thetag, String value) {
        if(child.getTag()!=null && child.getTag().getClass() == String.class) {
            String tag= (String) child.getTag();
            if(tag.equals(thetag)) {
                child.setText(value);
            }
        }
    }

关于java - 更改具有相同标签/ID 的多个 TextView 中的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19119893/

相关文章:

java - 如何使 SearchView 小部件中的搜索图标与布局的右端对齐?

java - 多线程搜索单个集合中的重复项

java - 如何检测其他应用程序是否正在播放音乐?

java - 从 ArrayList 访问对象的详细信息

android - 可绘制对象的内存,资源在 APK 内部、APK 外部更好还是内存相同?

java - 使用解析时出现问题 - 无法解析对象

java - 是否最好预先计算 for 循环的条件语句部分?

java - Solr 导入不执行任何操作

android - CMake 脚本忽略 CMAKE_ANDROID_ARCH_ABI,始终构建 armeabi

android - 响应为 204(无内容)时的 SSLHandshakeException