从多维数组中的第一列填充Spinner

时间:2016-06-22 16:45:28

标签: java android multidimensional-array android-spinner

我正在尝试从多维数组填充微调器。但是,当我现在运行应用程序时,我收到此错误:

string inputPath = "<input.txt file path>";
string outputPath = "<output.txt file path>";

for (int iterator = 0; iterator < 10000; iterator++)
{
    bool exists = false;
    long startTimeMillis = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond;

    while (!exists)
    {
        if (DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond - startTimeMillis >= 5 * 60 * 1000) Environment.Exit(0);

        if (File.Exists(inputPath))
        {
            exists = true;

            FileStream f = File.Open(inputPath, FileMode.Open);
            String output = String.Empty;
            for (int i = 0; i < f.Length; i++)
            {
                output += (char)f.ReadByte();
            }
            f.Dispose();

            File.WriteAllText(outputPath, output);
            File.Delete(inputPath);
        }
    }
}

Environment.Exit(0);

我想我不确定如何将数组的第一列数据放入微调器。

Attempt to invoke virtual method 'java.lang.String java.lang.Object.toString()' on a null object reference

这是activity_main.xml:

 //This method loads test scores into an array and populates spinner
    public void nameArrayListMethod (){

        InputStreamReader InputSR = null;
        BufferedReader BufferedRdr = null;
        String thisLine = null;

        AssetManager am = getAssets();

        try {
            InputSR = new InputStreamReader(am.open("scoresdata/test_scores.txt"));
            BufferedRdr = new BufferedReader(InputSR);

            // open input stream test_scores for reading purpose.
            int i = 0;
            while ((thisLine = BufferedRdr.readLine()) != null) {
                 System.out.println(thisLine);

                String[] parts = thisLine.split(" ");
                testScoreList[i][0] = parts[0];
                testScoreList[i][1] = parts[1];
                i = i +1;
            }
            BufferedRdr.close();
            InputSR.close();

        } catch (Exception e) {
            e.printStackTrace();

        }

        spinner= (Spinner) findViewById(R.id.spinner1);
        ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, testScoreList[0]);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerArrayAdapter);

    }

编辑2:

这是文本文件:

<LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Name"
                android:gravity="center" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Math Grade"
                android:gravity="center" />
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="English Grade"
                android:gravity="center" />

        </LinearLayout>

        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

            <Spinner
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/spinner1"
                android:layout_weight="1"
                android:gravity="center"
                android:hint="Name" />

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/editText2"
                android:layout_weight="1"
                android:gravity="center"
                android:hint="Grade"/>

            <EditText
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/editText3"
                android:layout_weight="1"
                android:gravity="center"
                android:hint="Grade"/>

        </LinearLayout>

现在它似乎部分正常工作,但它用第一行而不是第一列填充微调器。如何使用列填充它?

谢谢,

Airfix膨胀

1 个答案:

答案 0 :(得分:0)

好吧,我终于明白了。我创建了一个新数组并在while循环中使用它,它基本上提取了多维数组的第一列,并将其用作我的微调器名称。

这是我的代码,它可能不是很漂亮但它有效。感谢0X0nosugar的帮助,并指出了我正确的方向。

//This method loads test scores into an array and populates spinner
    public void nameArrayListMethod (){

        InputStreamReader InputSR = null;
        BufferedReader BufferedRdr = null;
        String thisLine = null;

        AssetManager am = getAssets();
        String[] SpinnerNames = new String[3];

        try {
            InputSR = new InputStreamReader(am.open("scoresdata/test_scores.txt"));
            BufferedRdr = new BufferedReader(InputSR);

            // open input stream test_scores for reading purpose.

            int i = 0;
            while ((thisLine = BufferedRdr.readLine()) != null) {
                 //System.out.println(thisLine);

                String[] parts = thisLine.split(" ");
                testScoreList[i][0] = parts[0];
                testScoreList[i][1] = parts[1];
                testScoreList[i][2] = parts[2];

                SpinnerNames[i] = testScoreList[i][0]; //Extract first column for spinner
                //System.out.println(testScoreList[i][0] + " " + testScoreList [i][1] + " " + testScoreList[i][2]);
                                i = i +1;
            }
            BufferedRdr.close();
            InputSR.close();

        } catch (Exception e) {
            e.printStackTrace();

        }


        spinner= (Spinner) findViewById(R.id.spinner1);
         ArrayAdapter<String> spinnerArrayAdapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_dropdown_item, SpinnerNames);
        spinnerArrayAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(spinnerArrayAdapter);

    }

当它最终以您希望的方式工作时,它真的令人满意。接下来的任务是弄清楚如何使它适用于不同的数组大小。

由于

Airfix膨胀