Android listView适配器错误

时间:2015-03-16 15:22:09

标签: android listview

我定义了这个字符串数组:

String[] mCountryList = new String[200];

并使用JSON数据填充变量,当我将该变量与ArrayAdapter一起使用时:

ArrayAdapter<String> myAdaptor = new ArrayAdapter<String>(MainActivity.this, android.R.layout.simple_list_item_1, mCountryList);

我收到此错误:

  

显示java.lang.NullPointerException

我认为String数组mCountryList可以有空值。例如:

mCountryList[0]="x";
mCountryList[1]="x";
mCountryList[2]=null;

我该如何解决这个问题?

我得到的堆栈跟踪是:

  

2459-2459 / com.example.behzad.behmytour E / AndroidRuntime:FATAL EXCEPTION:main      处理:com.example.behzad.behmytour,PID:2459      显示java.lang.NullPointerException              在android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:394)              在android.widget.ArrayAdapter.getView(ArrayAdapter.java:362)              在android.widget.AbsListView.obtainView(AbsListView.java:2263)              在android.widget.ListView.makeAndAddView(ListView.java:1790)              在android.widget.ListView.fillDown(ListView.java:691)              在android.widget.ListView.fillFromTop(ListView.java:752)              在android.widget.ListView.layoutChildren(ListView.java:1630)              在android.widget.AbsListView.onLayout(AbsListView.java:2091)              在android.view.View.layout(View.java:14817)              在android.view.ViewGroup.layout(ViewGroup.java:4631)

2 个答案:

答案 0 :(得分:1)

看起来您的某件商品是null,就像您可能想到的那样,但在您的问题中没有表达易于理解。解决方案是,确保它没有。

NullPointerException at android widget ArrayAdapter createViewFromResource

您可能希望使用List而不是数组,然后只填充尽可能多的项目,而不是拥有包含200个项目的静态数组,除非您当然总是有200个项目。< / p>

所以使用:

List<String> mCountryList = new ArrayList<String>();

而不是

String[] mCountryList=new String[200];

然后填充它,如下所示:

mCountryList.add("Your String");

答案 1 :(得分:1)

我认为您的错误在代码mCountryList[2]=null;中即使允许这样做,将字符串初始化为null也不是一个好主意,在Java中肯定不常见。只能将对象设置为null。

建议mCountryList[2]= "";改为设置为空白字符串。