如何在xml文件中传递数组和数组中的值

时间:2012-11-02 07:06:47

标签: android xml android-xml

在我的android应用程序中,我从string.xml文件中定义的数组中获取值,并在java活动类中使用它。在我使用阿拉伯字体之前,它的工作很有魅力。

当我将Arrabic字母放在xml文件中时,我无法在java文件中加入它们。 它显示错误"Some characters can not be mapped using cp1252" 这是带Arrabic的xmle数组

<string-array name="country_arrays">

        <item>لا شيء</item>
        <item>5 &#8211; 9</item>
        <item>10 &#8211; 14</item>
        <item>15 &#8211; 19</item>
        <item>20 &#8211; 24</item>
        <item>25 &#8211; 35</item>
        <item>36 &#8211; 45</item>

    </string-array>

这是java代码

if (s.equals("5 &#8211; 9")) {
                        message = getResources().getString(R.string.listdesc1);

                    } else if (s.equals("10 &#8211; 14")) {
                        message = getResources().getString(R.string.listdesc1);
                    } else if (s.equals("15 &#8211; 19")) {
                        message = getResources().getString(R.string.listdesc2);
                    } else if (s.equals("20 &#8211; 24")) {
                        message = getResources().getString(R.string.listdesc3);
                    } else if (s.equals("25 &#8211; 29")) {
                        message = getResources().getString(R.string.listdesc4);
                    } else if (s.equals("30 &#8211; 34")) {
                        message = getResources().getString(R.string.listdesc5);
                    } else if (s.equals("35 &#8211; 39")) {
                        message = getResources().getString(R.string.listdesc6);
                    } else if (s.equals("40 &#8211; 44")) {
                        message = getResources().getString(R.string.listdesc7);
                    } else if (s.equals("45 &#8211; 49")) {
                        message = getResources().getString(R.string.listdesc8);
                    } else if(s.equals(ذلك)){
                        message = getResources().getString(R.string.listdesc9);
                    }else if(s.equals(شيء)){
                        message=getResources().getString(R.string.listdesc0);   
                    }

                    txtv2.setText(message);
                    txtv.setText(getResources().getString(R.string.listtitle1));
                    // Toast.makeText( arg0.getContext(), message,

是否有任何选项可以传递值,例如在android xml数组中的HTML元素值=“1”。如果有方法,我可以将数组元素与该值进行比较,而不是实际的数组元素名称。

然而,PLZ帮我纠正了这一点。

thx inadvance ..

2 个答案:

答案 0 :(得分:1)

在我解决了这个问题之后,我理解了几个, 当我们将字符串数组中的值传递到字符串文件中时,我们无法在值(阿拉伯字母和 - 值)之后正确捕获值。当我调试时,我注意到onitemselectedListner()方法中的postion总是为0。

<string-array name="country_arrays">

        <item>لا شيء</item>
        <item>5 &#8211; 9</item>
        <item>10 &#8211; 14</item>
        <item>15 &#8211; 19</item>
        <item>20 &#8211; 24</item>
        <item>25 &#8211; 35</item>
        <item>36 &#8211; 45</item>

</string-array>

因此,我必须用上面的内容填充java文件中的列表。然后我注意到数据正确传递给lisner方法。如果我们使用字符(A,B ......等),我们不想担心。所有这个问题都是阿拉伯字母。(我不知道为什么布局文件不能正确地将阿拉伯字母传递给java文件)。

然后我按如下方式管理代码。

List<String> list = new ArrayList<String>();
        list.add("لا شيء");
        list.add("5 - 9");
        list.add("10 - 14");
        list.add("15 - 19");

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

        //Log.v(LogApp,"mint value is:" + mint);

        spinner1.setOnItemSelectedListener(new OnItemSelectedListener() {

            public void onItemSelected(AdapterView<?> arg0, View arg1,
                    int arg2, long arg3) {

                String s = arg0.getItemAtPosition(arg2).toString();

                if (s.equals("لا شيء")) {
                    message = getResources().getString(R.string.listdesc0);

                } else if (s.equals("5 - 9")) {
                    message = getResources().getString(R.string.listdesc1);
                } else if (s.equals("10 - 14")) {
                    message = getResources().getString(R.string.listdesc2);
                } else if (s.equals("15 - 19")) {
                    message = getResources().getString(R.string.listdesc3);
                }               txtv2.setText(message);
                //txtv.setText(getResources().getString(R.string.listtitle1));
                // Toast.makeText( arg0.getContext(), message,
                // Toast.LENGTH_LONG).show();
            }

            public void onNothingSelected(AdapterView<?> arg0) {
                // TODO Auto-generated method stub

            }

        });

答案 1 :(得分:0)

@menuka这是您的答案,查看此链接,您已经完成了近90%: - http://w2davids.wordpress.com/android-listview-with-iconsimages-and-sharks-with-lasers/