1

EditText在布局中有很长的元素列表,实际上这些元素用于获取矩阵输入,矩阵大小可能会有所不同3x3 5x5......

元素的 id 是一系列模式,比如11,12,13,21,22,23......现在有没有办法可以在循环中使用它们,比如

for(int i=0;i<10;i++)
a = findViewById("R.id.kernel1"+i);

当然目前上面的简单连接是行不通的,但是有办法吗?

<LinearLayout
android:id="@+id/convolutionMatrix"
android:layout_width="@dimen/matrixLayoutWidthHeight"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:layout_margin="@dimen/marginOne"
android:background="@color/white1"
android:padding="@dimen/marginOne" >

<TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:padding="@dimen/marginOne"
    android:text="@string/matrixTitle"
    android:textAppearance="?android:attr/textAppearanceLarge" />

<EditText
    android:id="@+id/kernel11"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/kernel12"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:layout_alignParentLeft="true"
    android:inputType="numberSigned" >
</EditText>

<EditText
    android:id="@+id/kernel13"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel14"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel15"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel21"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel22"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel23"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel24"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel25"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel31"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel32"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel33"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel34"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel35"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel41"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel42"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel43"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel44"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel45"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel51"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel52"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel53"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel54"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<EditText
    android:id="@+id/kernel55"
    android:layout_width="@dimen/matrixBoxWidthHeight"
    android:layout_height="@dimen/matrixBoxWidthHeight"
    android:inputType="numberSigned" />

<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Apply Kernel Mask" />
4

3 回答 3

2

我做这样的事情。我需要在一个地方阅读 6 种不同的资源。

  for (int i = 0; i < 6; i++ ){
          String fname = "p" + i;
          int id = context.getResources().getIdentifier(fname, "drawable", "com.example.yourproject");
          if (id == 0) {
              Log.e(TAG, "Lookup id for resource '"+fname+"' failed");
              // graceful error handling code here
          }
         scoresBm[i] =  (Bitmap) BitmapFactory.decodeResource(context.getResources(), id);

  }
于 2013-11-05T21:33:02.203 回答
2

更好的方法

访问原始资源的示例。

ArrayList<Integer> id = new ArrayList<Integer>();
for (int i = 0; i <= 10; i++) {
  id.add(getResources().getIdentifier("d"+i, "raw", getPackageName()));
}
于 2014-12-09T10:27:59.917 回答
0

最好务实地做,例如创建新的 xml 布局

layout.xml仅内容

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
</LinearLayout> 

现在在您的活动中为布局添加视图以进行循环示例

LinearLayout parent = (LinearLayout) findViewById(R.id.parent);

for(int i=0;i<10;i++)
{
   EditText etext = new EditText(this);
   //the Id and Tag must be set to call it back if we need info from this field
   etext.setId(i);
   etext.setTag("kernel"+i);
   //add edit text info here such as values and h/w etc
   etext.setText("my id : "+i+" , My Tags is : t"+i);

   //now add EditText field to parent
   parent.addView(etext);
}

并调用任何 EditText 或任何其他实际添加的视图,例如,您可以从标签或 id 调用它

 //get last element added from loop by id
 EditText last = (EditText) parent.findViewById(10);
 //or get by tag 
 EditText last = (EditText) parent.findViewWithTag("kernel10");

希望这有帮助

于 2013-11-05T21:33:30.160 回答