0

100 個の空白の EditTexts を含む 1 つのレイアウトがあり、すべて行/列 ID (box0101、box0102 など) に基づいて名前が付けられています。

次に、同じ規則 (answerbox0101、answerbox0102 など) を使用して名前が付けられた、まったく同じレイアウトに 100 個の TextViews を含む別のレイアウトを作成します。

ボックスのいずれかが一致しないか、100 になってすべてのボックスが一致するまで、box0101 と answerbox0101 をチェックするループを書きたいと思います。

私はループのロジックを書くことに問題はありません。私の問題は、ループ パラメーターを EditText の名前の一部にする必要があることです! どうすればこれを克服できますか?

4

2 に答える 2

1
for(int i=0;i<ROW_COUNT;i++){
    for(j=0;j<COLUMN_COUNT;j++){
        int editTextId=getResId("box"+i+j,this,id.class);
        int textViewId=getResId("answerbox"+i+j,this,id.class);

        EditText et=(EditText)findViewById(editTextId);
        TextView tv=(TextView)findViewById(textViewId);

       //Then do your comparison as you like and do the rest. 
    }   
}

public static int getResId(String variableName, Context context, Class<?> c) {

    try {
        Field idField = c.getDeclaredField(variableName);
        return idField.getInt(idField);
    } catch (Exception e) {
        e.printStackTrace();
        return -1;
    } 
}
于 2012-11-22T04:47:12.410 に答える
0

View の Tag プロパティを使用して文字列プロパティを設定できます。たとえば、100 個の editText を作成する場合、editText0101、editText0102、... などの編集テキストのタグを設定できます。メソッドを使用すると、タグ名、メソッドによって editText の直接参照を取得できますfindViewByTag()

于 2012-11-22T04:45:33.880 に答える