我的需求是:下拉框里面 有1990-2012 这些年份 ,还有一个 “其他”字段,当我选择其他时搜索出 1900-2012 以外的年份的数据 。我下面写的 if 判断 会报空指针,不知道该怎么写了
public List<Map<String, Object>> findMovieByType(String moviename,String type,String spinnerActor,String spinnerYear,String television,int pageNum,int numSize){ int m  = (pageNum-1)*DbUtil.page_Num; 
List<Map<String, Object>> movieTypeList = new ArrayList<Map<String, Object>>();
SQLiteDatabase db = dbHelper.getReadableDatabase(); Map<String, String> params = new HashMap<String, String>();
params.put("name", moviename);
params.put("type", type);
params.put("actor", spinnerActor);
/*if(spinnerYear.equals("其他")){
}else{*/
params.put("year", spinnerYear);
//}
params.put("television", television);
Set<String> fields = params.keySet();
List<String> values = new ArrayList<String>(); StringBuilder sql = new StringBuilder("select * from Online_All where 1=1");
for (Object field : fields) {
if(params.get(field)!=null && !params.get(field).isEmpty()){
sql.append(" and "+field+" like '%").append(params.get(field)).append("%'");
}
/*else if(params.get(field)!=null && !params.get(field).isEmpty()&& spinnerYear.equals("其他")){
sql.append(" and "+field+" like '%").append(params.get(field)).append("%'").append("and year>=0 and year<1990");
}*/
}
sql.append(" order by year desc limit ?,?");
values.add(String.valueOf(m));
values.add(String.valueOf(numSize));
Cursor cursor = db.rawQuery(sql.toString(),values.toArray(new String[values.size()]));
while(cursor.moveToNext()){ int num = cursor.getInt(cursor.getColumnIndex("num"));
String name = cursor.getString(cursor.getColumnIndex("name"));
String movieactor = cursor.getString(cursor.getColumnIndex("actor"));
String movieregion = cursor.getString(cursor.getColumnIndex("region"));
String movietype = cursor.getString(cursor.getColumnIndex("type"));
String movieyear = cursor.getString(cursor.getColumnIndex("year"));
String link = cursor.getString(cursor.getColumnIndex("link"));
String jianjie = cursor.getString(cursor.getColumnIndex("jianjie"));
String mtelevision = cursor.getString(cursor.getColumnIndex("television")); HashMap<String, Object> map = new HashMap<String, Object>(); map.put("moviepic", num);
map.put("movieName", name);
map.put("movieyear", movieyear);
map.put("movieactor", movieactor);
map.put("movieregion", movieregion);
map.put("movietype", movietype);
map.put("movietlink", link);
map.put("jianjie", jianjie);
map.put("television", mtelevision);
movieTypeList.add(map);
}
cursor.close();
db.close();
return movieTypeList;
}

解决方案 »

  1.   

    spinnerYear这个参数传入的是多少,输出看看
      

  2.   

    看了,下拉框选的什么,传过来的参数就是什么就出在if 判断其他都没错只是为什么不能写if 这些
      

  3.   

    else if(params.get(field)!=null && !params.get(field).isEmpty()&& spinnerYear.equals("其他"))
    你指的这行报空指针? 那么确实只有可能是 spinnerYear的问题啊.把spinnerYear.equals("其他") 改成 "其他".equals(spinnerYear)试试
      

  4.   

    这是传说中的android sqlit 微数据库?
      

  5.   

    应该是spinnerYear值为null
    你可以在函数的开始 输出spinnerYear看看  System.out.println(spinnerYear);
      

  6.   

    "其他".equals(spinnerYear)
    不管是不是spinnerYear报空指针,你也应该想上面那么写,避免空指针。