Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android-通过编程将文本从strings.xml添加到TextView_Android_Arrays_String - Fatal编程技术网

Android-通过编程将文本从strings.xml添加到TextView

Android-通过编程将文本从strings.xml添加到TextView,android,arrays,string,Android,Arrays,String,好的,我一直在学习一个教程(),这个教程是关于创建微调器和向视图动态添加图像(其位置在strings.xml文件中定义)。这很好,但是我想扩展这个项目,这样我就可以包含文本数组,同样在strings.xml文件中定义,在图像前后显示。 我的代码如下所示,正如您所看到的,我想用对我已经选择的微调器项的引用来替换2个setText行。 有什么想法吗?谢谢你的关注 谢谢大家的意见,我现在已经解决了这个问题,并在下面展示了一些关于我如何解决这个问题的注释代码 public class MainActiv

好的,我一直在学习一个教程(),这个教程是关于创建微调器和向视图动态添加图像(其位置在strings.xml文件中定义)。这很好,但是我想扩展这个项目,这样我就可以包含文本数组,同样在strings.xml文件中定义,在图像前后显示。 我的代码如下所示,正如您所看到的,我想用对我已经选择的微调器项的引用来替换2个setText行。 有什么想法吗?谢谢你的关注

谢谢大家的意见,我现在已经解决了这个问题,并在下面展示了一些关于我如何解决这个问题的注释代码

public class MainActivity extends Activity {

private ImageView image;
private String[] states;
private Spinner spinner1;
private TypedArray imgs;
private String[] leaders;
private String[] descrip;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    states = getResources().getStringArray(R.array.countries);
    imgs = getResources().obtainTypedArray(R.array.leader_photos);

    // --- The following lines grab the problematic string arrays defined in
    // strings.xml
    leaders = getResources().getStringArray(R.array.leaders);
    descrip = getResources().getStringArray(R.array.descrip);

    image = (ImageView) findViewById(R.id.leaderPhoto);
    spinner1 = (Spinner) findViewById(R.id.spinner1);

    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, states);
    dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinner1.setAdapter(dataAdapter);

    spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> parent, View view,
                int position, long id) {

            // The variable index identifies what position the selected
            // spinner is. TextView text... locks to the TextView defined in
            // the activity_main.xml layout file. text.setText... loads the
            // appropriate value from the leaders string array
            int index = parent.getSelectedItemPosition();
            TextView text = (TextView) findViewById(R.id.tv1);
            text.setText(leaders[index]);

            image.setImageResource(imgs.getResourceId(
                    spinner1.getSelectedItemPosition(), -1));

            // See earlier comments above TextView tv1 for how this works
            TextView text2 = (TextView) findViewById(R.id.tv2);
            text2.setText(descrip[index]);

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }

    });
}
公共类MainActivity扩展活动{
私有图像查看图像;
私有字符串[]状态;
私人纺纱机1;
专用型Darray imgs;
私人领导;
私有字符串[]描述符;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
states=getResources().getStringArray(R.array.countries);
imgs=getResources().obtainTypedArray(R.array.leader\u照片);
//---以下几行获取中定义的有问题的字符串数组
//strings.xml
leaders=getResources().getStringArray(R.array.leaders);
descripp=getResources().getStringArray(R.array.descripp);
image=(ImageView)findViewById(R.id.leaderPhoto);
喷丝头1=(喷丝头)findViewById(R.id.spinner1);
ArrayAdapter dataAdapter=新的ArrayAdapter(此,
android.R.layout.simple_微调器_项,状态);
数据适配器
.setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
喷丝头1.设置适配器(数据适配器);
spinner1.setOnItemSelectedListener(新的OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView父视图、视图、,
内部位置,长id){
//变量索引标识所选位置
//微调器为。TextView文本…锁定到中定义的TextView
//activity_main.xml布局文件.text.setText…加载
//引线字符串数组中的适当值
int index=parent.getSelectedItemPosition();
TextView text=(TextView)findViewById(R.id.tv1);
setText(leaders[索引]);
image.setImageResource(imgs.getResourceId(
喷丝头1.getSelectedItemPosition(),-1));
//请参阅上文TextView tv1的评论,了解其工作原理
TextView text2=(TextView)findViewById(R.id.tv2);
text2.setText(描述[索引]);
}
@凌驾
未选择公共无效(AdapterView arg0){
}
});
}

}

Android-通过编程将文本从strings.xml添加到TextView-

如果我没听错的话

 Resources resources = context.getResources();

 String[] textString = resources.getStringArray(R.array.mytext);
然后将文本放在字符串向量中-很容易放在文本视图中

然后在xml文件中

 <string-array name = "mytext"> 
    <item> ... text </item>
    <item> ... text</item>
    <item> ... text</item>
 </string-array>

您可以使用进入微调器OnClickListener的位置来获取特定的引线和状态描述,如下所示。 text.setText(引线[位置]);
text2.setText(描述[位置])

String item=(String)parent.getItemAtPosition(pos)text.setText(项目)将答案和@Raghunandhan的评论结合起来,这将像您期望的那样工作。
text.setText(textString[i]); // at position i