将字符串数组与字符串进行比较,并将结果发布到main.xlm

时间:2011-03-27 01:55:11

标签: android

我无法理解如何比较Java for Android中的字符串。我已经编写了在JavaScript和Palm中执行此操作的代码,但我不熟悉Java并且有点困惑。例如,我正在尝试修改Android开发者网站上SpinnerActivity的示例(http://developer.android.com/resources/samples/Spinner/src/com/android/example/spinner/SpinnerActivity.html)。在我的应用程序中,我正在观察旋转器中的管道尺寸而不是行星。当用户选择管道尺寸时,我想引用一系列管道尺寸,并能够选择与该管道尺寸相关的其他参数,如管道的外径(OD)。我修改了上面的示例代码,并为管道大小和OD大小添加了数组。然后我尝试比较用户在管道尺寸微调器中选择的内容与我的管道尺寸数组,并使用匹配的数组的数量来选择相关的OD。我试图进行这种比较的方式有问题。我将这两个值都设置为stings但它们似乎永远不会找到彼此。

我更改的HelloSpinner1.java部分是:

       public void onItemSelected(AdapterView<?> parent, View v, int pos, long row) {

            HelloSpinner1.this.mPos = pos;
            HelloSpinner1.this.mSelection = parent.getItemAtPosition(pos).toString();
            /*
             * Set the value of the text field in the UI
             */
            TextView resultText = (TextView)findViewById(R.id.SpinnerResult);
            resultText.setText(HelloSpinner1.this.mSelection);

            String[] OD;              // array of pipe ODs
            OD = new String[30];      // allocates memory for 30 floating point numbers
            OD[0] = "0.405";
            OD[1] = "0.540";
            OD[2] = "0.675";
            OD[3] = "0.840";
            OD[4] = "1.050";
            OD[5] = "1.315";
            OD[6] = "1.660";
            OD[7] = "1.9";
            OD[8] = "2.375";
            OD[9] = "2.875";
            OD[10] = "3.5";
            OD[11] = "4";
            OD[12] = "4.5";
            OD[13] = "5.563";
            OD[14] = "6.625"; 
            OD[15] = "8.625";
            OD[16] = "10.750";
            OD[17] = "12.75";
            OD[18] = "14";
            OD[19] = "16";
            OD[20] = "18";
            OD[21] = "20";
            OD[22] = "22";
            OD[23] = "24";
            OD[24] = "26";
            OD[25] = "28";
            OD[26] = "30";
            OD[27] = "32";
            OD[28] = "34";
            OD[29] = "36";


String [] Size;
Size = new String [30];
            Size[0] = "1/8";
            Size[1] = "1/4";
            Size[2] = "3/8";
            Size[3] = "1/2";
            Size[4] = "3/4";
            Size[5] = "1";
            Size[6] = "1-1/4"; 
            Size[7] = "1-1/2";
            Size[8] = "2";
            Size[9] = "2-1/2";
            Size[10] = "3";
            Size[11] = "3-1/2";
            Size[12] = "4";
            Size[13] = "5";
            Size[14] = "6";
            Size[15] = "8";
            Size[16] = "10";
            Size[17] = "12";
            Size[18] = "14";
            Size[19] = "16";
            Size[20] = "18";
            Size[21] = "20";
            Size[22] = "22"; 
            Size[23] = "24";
            Size[24] = "26";
            Size[25] = "28";
            Size[26] = "30";
            Size[27] = "32";
            Size[28] = "34";
            Size[29] = "36"; 



            String ODSize;

            for (int i = 0; i  <= 29; i++){
                    if (Size.equals("HelloSpinner1.this.mSelection")) {
                    ODSize = OD[i];
                    break;
                     }
                }  

        }

相关的strings.xml对android网站进行了一些修改,只需稍加修改:

    管和管
             1/8         1/4         3/8         3/4         1         1-1 / 4         1-1 / 2         2         2-1 / 2         3         3-1 / 2         4         五         6         8         10         12         14         16         18         20         22         24         26         28         三十         32         34         36          选择管道尺寸

1 个答案:

答案 0 :(得分:0)

快速说明,但我在这里看到两件事:

1)引号中有“HelloSpinner1.this.mSelection”。在.equals中,即将您的变量Size直接与该字符串进行比较...而不是存储在该对象中的值。例如,你问:“1/8”?=“HelloSpinner1.this.mSelection”......不是,“1/8”?=“1/4”在这种情况下。这可能是你的大部分问题。

2)你可以在Listener方法中使用微调器的位置。这为您提供了微调器上的选择位置。如果您不修改这些值,您就已经知道了数组的索引。如果您正在修改它们/ /那么/您可以进行字符串比较(或同时修改数组以使它们保持最新)。

一旦消除了引号问题,您可能还想检查一下您要比较的内容。一个非常简单的方法是为每个值声明一个String,然后在调试器中运行它或记录输出。

最后,作为个人偏好,我不喜欢存储不会在xml文件中更改的长数组。只需将其编码为一个不必在以后解释的数组。这将直接为您提供数组访问,并加快执行速度。