Java 资源中项目的Count元素和Get属性
我有一个资源文件Java 资源中项目的Count元素和Get属性,java,android,Java,Android,我有一个资源文件 <?xml version="1.0" encoding="utf-8"?> <resources> <IDs name="IDs"> <item type="id" name="bt_A"/> <item type="id" name="bt_B"/> <item type="id" name="bt_C"/> <item ty
<?xml version="1.0" encoding="utf-8"?>
<resources>
<IDs name="IDs">
<item type="id" name="bt_A"/>
<item type="id" name="bt_B"/>
<item type="id" name="bt_C"/>
<item type="id" name="bt_D"/>
</IDs>
</resources>
如何计算ID中的项目数。这意味着结果将是4
如何通过循环获取每个项的名称。我可以访问R.id.bt_A,R.id.bt_B。。。但我无法想象如何通过循环获得所有名称。类似于这样的内容(此代码无法运行,请参见插图):
for(int i=0;i没有自动生成ID数组的功能(android不处理内部ID,已尝试过),不过根据您的要求,还有一种替代方法
将长度和id标记声明为
<integer name="length">4</integer>
<item type="id" name="bt_A"/>
<item type="id" name="bt_B"/>
<item type="id" name="bt_C"/>
<item type="id" name="bt_D"/>
4
然后在java中,使用字符转换为ascii的循环来获得如下值:
for(int i=65; i< 65+getResources().getInteger(R.integer.length); i++){
Button bt = new Button(getBaseContext());
bt.setId(getResources().getIdentifier("bt_"+(char)i,"id",getPackageName()));
}
for(inti=65;i<65+getResources().getInteger(R.integer.length);i++){
按钮bt=新按钮(getBaseContext());
bt.setId(getResources().getIdentifier(“bt_+(char)i,“id”,getPackageName());
}
我解决了我的问题
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="length">4</integer>
<item type="id" name="bt_1"/>
<item type="id" name="bt_2"/>
<item type="id" name="bt_3"/>
<item type="id" name="bt_4"/>
<string-array name="labels">
<item name="label_1">Ok</item>
<item name="label_2">Cancel</item>
<item name="label_3">Exit</item>
<item name="label_4">Stop</item>
</string-array>
</resources>
4.
好啊
取消
出口
停止
和Java代码
package android.calculator;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Button;
import android.widget.GridLayout;
public class ConstraintActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridLayout root = new GridLayout(getBaseContext());
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.setMargins(0, 0, 0,0);
root.setBackgroundColor(Color.GRAY);
root.setRowCount(2);
root.setColumnCount(2);
root.setAlignmentMode(GridLayout.ALIGN_MARGINS);
root.setLayoutParams(params);
int count = getResources().getInteger(R.integer.length);
int[] ids = new int[count];
String[] labels = getResources().getStringArray(R.array.labels);
for(int i=0; i<count; i++) {
ids[i] = getResources().getIdentifier("bt_" + (i+1), "id", getPackageName());
}
Log.d("IDs", ids.toString());
for(int i=0; i<count;i++){
Button bt = new Button(getBaseContext());
bt.setId(ids[i]);
bt.setText(labels[i]);
root.addView(bt, i);
}
setContentView(root);
}
}
package.android.calculator;
导入android.graphics.Color;
导入android.os.Bundle;
导入android.support.v7.app.AppActivity;
导入android.util.Log;
导入android.widget.Button;
导入android.widget.GridLayout;
公共类约束性扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
GridLayout root=新的GridLayout(getBaseContext());
GridLayout.LayoutParams params=新的GridLayout.LayoutParams();
参数设置边距(0,0,0,0);
根.立根基色(颜色.灰色);
root.setRowCount(2);
root.setColumnCount(2);
setAlignmentMode(GridLayout.ALIGN_边距);
root.setLayoutParams(params);
int count=getResources().getInteger(R.integer.length);
int[]ids=新的int[count];
String[]labels=getResources().getStringArray(R.array.labels);
对于(int i=0;i可能重复谢谢!如果我想获取item元素的属性值,如何获取?
期望值为OK没有“乐于帮助”、“乐于编码”之类的内容~我已经编辑了我的问题,请您回答。我真的需要将ID和标签从资源加载到按钮。不过,我很高兴您解决了这个问题一次添加所有需求会很好,这样回答者就有机会一次解决问题,修改问题只应该是为了澄清需求,尽管您可以添加新需求,尽管这不是理想的、令人满意的编码
for(int i=65; i< 65+getResources().getInteger(R.integer.length); i++){
Button bt = new Button(getBaseContext());
bt.setId(getResources().getIdentifier("bt_"+(char)i,"id",getPackageName()));
}
<?xml version="1.0" encoding="utf-8"?>
<resources>
<integer name="length">4</integer>
<item type="id" name="bt_1"/>
<item type="id" name="bt_2"/>
<item type="id" name="bt_3"/>
<item type="id" name="bt_4"/>
<string-array name="labels">
<item name="label_1">Ok</item>
<item name="label_2">Cancel</item>
<item name="label_3">Exit</item>
<item name="label_4">Stop</item>
</string-array>
</resources>
package android.calculator;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.Button;
import android.widget.GridLayout;
public class ConstraintActivity extends AppCompatActivity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GridLayout root = new GridLayout(getBaseContext());
GridLayout.LayoutParams params = new GridLayout.LayoutParams();
params.setMargins(0, 0, 0,0);
root.setBackgroundColor(Color.GRAY);
root.setRowCount(2);
root.setColumnCount(2);
root.setAlignmentMode(GridLayout.ALIGN_MARGINS);
root.setLayoutParams(params);
int count = getResources().getInteger(R.integer.length);
int[] ids = new int[count];
String[] labels = getResources().getStringArray(R.array.labels);
for(int i=0; i<count; i++) {
ids[i] = getResources().getIdentifier("bt_" + (i+1), "id", getPackageName());
}
Log.d("IDs", ids.toString());
for(int i=0; i<count;i++){
Button bt = new Button(getBaseContext());
bt.setId(ids[i]);
bt.setText(labels[i]);
root.addView(bt, i);
}
setContentView(root);
}
}