我正在使用字符串数组,我将其传递给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 ;线。 我可以重新分配数组长度吗?我认为这是不可能的。
答案 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(你的数据)。
多数民众赞成......