如何在android中使用可变大小的数组?

时间:2014-07-29 12:26:48

标签: android arrays android-layout android-activity assets

我正在使用字符串数组,我将其传递给ArrayAdapter以获取微调项目。 我的数组大小(通常小于10)和值是可变的(我从资产文件中取出)

如果我使用它:

String[] arr = new String[10];
protected void onCreate(Bundle savedInstanceState) {
        breader = new BufferedReader(new InputStreamReader(getAssets().open(path)));
        int length = Integer.parseInt(breader.readLine());
        for(int i=0; i<length; i++){
            arr[i]=breader.readLine();

        initialize();
....
}

initialize(){    
    spinner1 = (Spinner) findViewById(R.id.spinner1);
    ArrayAdapter<String> array = new ArrayAdapter<String>(Activity.this, android.R.layout.simple_spinner_item, arr);
    spinner1.setAdapter(array);
}

它在spinner1.setAdapter(array)中显示 NullPointerException ;线。 我可以重新分配数组长度吗?我认为这是不可能的。

1 个答案:

答案 0 :(得分:2)

因为你在数组的最后部分没有数据时添加null。 我的意思是在assest文件中有7个数据,你移动循环10次,所以在7个数据后添加有null表示。所以breader.readLine();读取null并将其添加到您的字符串数组中,当您将StringArray解析为数组适配器时,数组的第8个位置为null,并且返回nullpointer Exception fire。

所以只需检查breader.readLine()!= Null然后将其添加到String of Array中,否则添加一些Temp文本。

您还使用ArrayList而不是String [] Array。 ArrayList是动态Arraylist你可以添加数据到list使用array.add(你的数据)。

多数民众赞成......