我在布局中有很长的EditText
元素列表,实际上这些元素用于获取矩阵输入,矩阵大小可能会有所不同3x3
5x5
...
元素的id是一系列模式,如11,12,13,21,22,23
...
现在有一种方法可以在像
for(int i=0;i<10;i++)
a = findViewById("R.id.kernel1"+i);
当然,目前上面简单的连接不会工作,但是有办法吗?
<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" />
答案 0 :(得分: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);
}
答案 1 :(得分:2)
更好的方法
访问原始资源的示例。
ArrayList<Integer> id = new ArrayList<Integer>();
for (int i = 0; i <= 10; i++) {
id.add(getResources().getIdentifier("d"+i, "raw", getPackageName()));
}
答案 2 :(得分: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或任何其他视图,您可以从tag或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");
希望这个帮助