ArrayAdapter使应用程序崩溃

时间:2014-07-31 16:53:56

标签: android android-layout nullpointerexception android-arrayadapter

我有一个适用于多个4.4.2设备的自定义阵列适配器,但是当我使用蜂窝设备或模拟器设备进行测试时,它会让我的应用程序崩溃。

这是我的实施...... 首先,我用一个wifi连接名称填充一个字符串数组:

final ListView listview = (ListView) findViewById(R.id.listview);
final String[] values = new String[10];
for (int j = 0; j < wList.size(); j++) {
    if (j < 10) 
        {
            values[j] = "SSID:    " + wList.get(j).SSID;
        }

    else {
            break;
        }
}

然后我将这些值添加到ArrayList ...

final ArrayList<String> list = new ArrayList<String>();
                for (int i = 0; i < values.length; i++) {
                    list.add(values[i]);
                }

然后我使用我的自定义适配器

final StableArrayAdapter adapter = new StableArrayAdapter(
                        TestWifiConnect.this,
                        R.layout.mytextview, list);

private class StableArrayAdapter extends ArrayAdapter<String> {

    HashMap<String, Integer> mIdMap = new HashMap<String, Integer>();

    public StableArrayAdapter(Context context, int textViewResourceId,
            List<String> objects) {
        super(context, textViewResourceId, objects);
        for (int i = 0; i < objects.size(); ++i) {
            mIdMap.put(objects.get(i), i);
        }
    }

    @Override
    public long getItemId(int position) {
        String item = getItem(position);
        return mIdMap.get(item);
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

}

当调用此方法时,我收到此错误

12-31 18:58:03.096: E/AndroidRuntime(5809): java.lang.NullPointerException
12-31 18:58:03.096: E/AndroidRuntime(5809): at android.widget.ArrayAdapter.createViewFromResource(ArrayAdapter.java:355)
12-31 18:58:03.096: E/AndroidRuntime(5809):     at android.widget.ArrayAdapter.getView(ArrayAdapter.java:323)
12-31 18:58:03.096: E/AndroidRuntime(5809):     at android.widget.AbsListView.obtainView(AbsListView.java:1467)
12-31 18:58:03.096: E/AndroidRuntime(5809):     at android.widget.ListView.measureHeightOfChildren(ListView.java:1216)

所以我的问题是,我做错了什么,为什么这会让我的程序崩溃?我已经研究了一段时间了,有些人指出要确保列表不是null ,但我不确定这是问题,因为它适用于某些设备,而不适用于其他设备。谢谢你的帮助。

0 个答案:

没有答案