0

変更時に同じテキストで複数のテキスト ビューを設定しようとすると問題が発生します。TextViews同じ値を設定する必要があるものが複数あります。私がやっていることは、各 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 があるため、各 TextView をグローバル変数としてクラスに保存したくありません。これに対する好ましいアプローチ、またはこれを達成するためのより簡単な方法はありますか?

4

1 に答える 1

2

タグを使用してビューをグループ化できます。同じグループのテキストビューに同じタグ (たとえば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);
            }
        }
    }
于 2013-10-01T15:38:44.510 に答える