读书人

Cursor下用法的注意事项

发布时间: 2012-09-29 10:30:01 作者: rapoo

Cursor上用法的注意事项
注意要判断Cursor返回的记录是否为空~~ 之前给这个问题卡了很久~

public SimpleAdapter getlistItem(Cursor c){        ArrayList<HashMap<String,Object>> listItem = new ArrayList<HashMap<String,Object>>();    if (c.getCount()==0)  //一定要加这个判断条件~,否则出现cursor越界    return null;    c.moveToFirst();    do    {    int index;    HashMap<String, Object> map = new HashMap<String, Object>();       index = c.getColumnIndex(Todolist.TITLE);    map.put(Todolist.TITLE, c.getString(index));    index = c.getColumnIndex(Todolist.BEGIN_TIME);    map.put(Todolist.BEGIN_TIME,convertTime(c.getLong(index)));    index = c.getColumnIndex(Todolist.STATUS);    map.put(Todolist.STATUS, drawble[c.getInt(index)]);    listItem.add(map);    }    while (c.moveToNext());        adapter = new SimpleAdapter(this, listItem, R.layout.list_item,    new String[]{Todolist.TITLE,Todolist.BEGIN_TIME,Todolist.STATUS},    new int[]{R.id.TextView01,R.id.TextView02,R.id.ImageView01});    return adapter;    }

还有就是查询设定某些条件返回的cursor,不能直接就获取返回记录的的值,要先moveToFirst()
例如:
PersonActivity.gategory = PersonActivity.dc.query(CategoryList.projection,"_id="+tag, null, null);/* * 记得移动光标,因为刚开得到的cursor没有指向任何记录位置的~  惨痛的教训! */PersonActivity.gategory.moveToFirst();showtype.setText("类型:"+PersonActivity.gategory.getString(1));


还有Cursor的requery()和deactivate()两个方法的用途 if(null != cur && cur.getCount() > 0){
SendMessage sendMsg = new SendMessage();
cur.moveToFirst();
while(cur.isAfterLast()){
sendMsg.setId(cur.getString(cur.getColumnIndexOrThrow(_ID)));
sendMsg.setDownSize(cur.getString(cur.getColumnIndexOrThrow(DOWN_SIZE)));
sendMsg.setTimeLong(cur.getString(cur.getColumnIndexOrThrow(TIME_LONG)));
sendMsg.setAddress(cur.getString(cur.getColumnIndexOrThrow(ADDRESS)));
msgList.add(sendMsg);
cur.moveToNext();
}

// do{
// sendMsg.setId(cur.getString(cur.getColumnIndexOrThrow(_ID)));
// sendMsg.setDownSize(cur.getString(cur.getColumnIndexOrThrow(DOWN_SIZE)));
// sendMsg.setTimeLong(cur.getString(cur.getColumnIndexOrThrow(TIME_LONG)));
// sendMsg.setAddress(cur.getString(cur.getColumnIndexOrThrow(ADDRESS)));
// msgList.add(sendMsg);
// }while(cur.moveToNext());

}
close();
}catch(Exception e){

}
return msgList;
}

读书人网 >移动开发

热点推荐