subMap = new HashMap<String, String>();
cursor = sdB.query(DataBase.TB, cols, null, null, null, null, null);
cursor.moveToFirst();
limit = 1;
while(cursor.moveToNext()){
limit +=1;
}
limit *= 2;
cursor.moveToFirst();
do{
for(i=i+1; i<limit; i++){
if(i%2!=0){
subCode = cursor.getString(cursor.getColumnIndex(DataBase.C_CODE));
subMap.put(TAG_SUB_CODE, subCode);
Log.i("Alert", subCode);
subjects.add(subMap);
break;
}
else{
subName = cursor.getString(cursor.getColumnIndex(DataBase.SUB_TITLE));
subMap.put(TAG_SUB_NAME, subName);
if(subMap.containsKey(TAG_SUB_NAME))
Log.i("Alert", "Yes");
if(subMap.containsValue(subName))
Log.i("Alert", "Again Yes");
Log.i("Alert", TAG_SUB_NAME);
Log.i("Alert", subName);
subjects.add(subMap);
}
}
}while(cursor.moveToNext());
cursor.close();
给出了if和else语句中subjects.add(subMap)
的NPE。首先执行else,然后执行if。但是程序在第一次遇到else块时就停止了。有人能帮帮我吗?我检查了hashmap中值和键的存在,它在我的日志猫中返回了我的true (yes
和again yes
),但仍然subjects.add(subMap)返回NPE。
Thank You
您需要初始化列表subjects
。例如:
ArrayList<HashMap<String, String>> subjects = new ArrayList<HashMap<String, String>>();
如果你不这样做,那么在这一行:
subjects.add(subMap);
将抛出NPE
最有可能的subjects
是null。您是否像这样初始化它:
ArrayList<Map<String, String>> subjects = new ArrayList<Map<String, String>>();