首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

Cursor下用法的注意事项

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

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;
    }

热点排行