va.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow. Make sure the Cursor

<pre name="code" class="java">02-26 07:33:48.066: E/CursorWindow(31404): Failed to read row 0, column -1 from a CursorWindow which has 3 rows, 20 columns.
02-26 07:33:48.067: W/System.err(31404): java.lang.IllegalStateException: Couldn't read row 0, col -1 from CursorWindow.  Make sure the Cursor is initialized correctly before accessing data from it.
02-26 07:33:48.067: W/System.err(31404): 	at android.database.CursorWindow.nativeGetLong(Native Method)
02-26 07:33:48.067: W/System.err(31404): 	at android.database.CursorWindow.getLong(CursorWindow.java:507)
02-26 07:33:48.067: W/System.err(31404): 	at android.database.AbstractWindowedCursor.getLong(AbstractWindowedCursor.java:75)
02-26 07:33:48.067: W/System.err(31404): 	at com.android.music.db.SongDB.getSonInfoByCursor(SongDB.java:234)
02-26 07:33:48.068: W/System.err(31404): 	at com.android.music.db.SongDB.getSongInfoAll(SongDB.java:294)
02-26 07:33:48.068: W/System.err(31404): 	at com.android.music.fragment.SongFragment.LoadMusicData(SongFragment.java:114)
02-26 07:33:48.068: W/System.err(31404): 	at com.android.music.fragment.SongFragment.access$3(SongFragment.java:111)
02-26 07:33:48.068: W/System.err(31404): 	at com.android.music.fragment.SongFragment$1.doInBackground(SongFragment.java:102)
02-26 07:33:48.068: W/System.err(31404): 	at com.android.music.async.AsyncTaskHandler$2.run(AsyncTaskHandler.java:76)
02-26 07:33:48.068: W/System.err(31404): 	at java.lang.Thread.run(Thread.java:838)

下面是需要调用的代码,
 

package com.android.music.model;


/**
 * ClassName:SongInfo
 * Function: TODO ADD FUNCTION
 *
 * @author lqq
 * @version  
 * @since 1.0.0
 * @Date	 
 * 2016-2-18 下午5:21:21
 * @see 	 
 * 
 */
public class SongInfo {
	
	
	/**
	 * 本地歌曲
	 */
	public static final int LOCAL = 0;
	/**
	 * 网上歌曲
	 */
	public static final int NET = 1;
	/**
	 * 无效
	 */
	public static final int INVALID = 0;
	/**
	 * 有效
	 */
	public static final int VALID = 1;

	private String sid; // id
	private long id; // 歌曲ID 3
	private String title; // 歌曲名称 0
	private String album; // 专辑 7
	private long albumId;// 专辑ID 6
	private String displayName; // 显示名称 4
	private String artist; // 歌手名称 2
	private long duration; // 歌曲时长 1
	private long size; // 歌曲大小 8
	private String sizeStr;// 歌曲大小:单位M / KB
	private String path; // 歌曲路径 5
	private String createTime;// 创建时间
	private int type; // 0是本地歌曲 1是网上下载歌曲
	/** -----------当是从网上下载的歌曲时-------------- */
	private String albumUrl; // 专辑图片下载路径
	private String downUrl;// 歌曲下载路径
	private long downSize;// 已经下载的进度
	private long playProgress;// 播放的进度
	private String category;// 分类
	private String childCategory;// 子分类
	private int valid;// 是否有效 0是无效 1是有效
	public String getSid() {
		return sid;
	}
	public void setSid(String sid) {
		this.sid = sid;
	}
	public long getId() {
		return id;
	}
	public void setId(long id) {
		this.id = id;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public String getAlbum() {
		return album;
	}
	public void setAlbum(String album) {
		this.album = album;
	}
	public long getAlbumId() {
		return albumId;
	}
	public void setAlbumId(long albumId) {
		this.albumId = albumId;
	}
	public String getDisplayName() {
		return displayName;
	}
	public void setDisplayName(String displayName) {
		this.displayName = displayName;
	}
	public String getArtist() {
		return artist;
	}
	public void setArtist(String artist) {
		this.artist = artist;
	}
	public long getDuration() {
		return duration;
	}
	public void setDuration(long duration) {
		this.duration = duration;
	}
	public long getSize() {
		return size;
	}
	public void setSize(long size) {
		this.size = size;
	}
	public String getSizeStr() {
		return sizeStr;
	}
	public void setSizeStr(String sizeStr) {
		this.sizeStr = sizeStr;
	}
	public String getPath() {
		return path;
	}
	public void setPath(String path) {
		this.path = path;
	}
	public String getCreateTime() {
		return createTime;
	}
	public void setCreateTime(String createTime) {
		this.createTime = createTime;
	}
	public int getType() {
		return type;
	}
	public void setType(int type) {
		this.type = type;
	}
	public String getAlbumUrl() {
		return albumUrl;
	}
	public void setAlbumUrl(String albumUrl) {
		this.albumUrl = albumUrl;
	}
	public String getDownUrl() {
		return downUrl;
	}
	public void setDownUrl(String downUrl) {
		this.downUrl = downUrl;
	}
	public long getDownSize() {
		return downSize;
	}
	public void setDownSize(long downSize) {
		this.downSize = downSize;
	}
	public long getPlayProgress() {
		return playProgress;
	}
	public void setPlayProgress(long playProgress) {
		this.playProgress = playProgress;
	}
	public String getCategory() {
		return category;
	}
	public void setCategory(String category) {
		this.category = category;
	}
	public String getChildCategory() {
		return childCategory;
	}
	public void setChildCategory(String childCategory) {
		this.childCategory = childCategory;
	}
	public int getValid() {
		return valid;
	}
	public void setValid(int valid) {
		this.valid = valid;
	}
	

}

这是出现的错误代码,一般出现这种错误有几点,我先把我的代码贴出来


public SongInfo getSonInfoByCursor(Cursor cursor){
		SongInfo info=new SongInfo();
		info.setAlbum(cursor.getString(cursor.getColumnIndex("album")));
		info.setAlbumId(cursor.getLong(cursor.getColumnIndex("albumId")));
		info.setAlbumUrl(cursor.getString(cursor.getColumnIndex("albumUrl")));
		info.setArtist(cursor.getString(cursor.getColumnIndex("artist")));
		info.setCategory(cursor.getString(cursor.getColumnIndex("category")));
		info.setChildCategory(cursor.getString(cursor.getColumnIndex("childCategory")));
		info.setCreateTime(cursor.getString(cursor.getColumnIndex("createTime")));
		info.setDisplayName(cursor.getString(cursor.getColumnIndex("displayName")));
		info.setDownSize(cursor.getLong(cursor.getColumnIndex("downSize")));
		info.setDownUrl(cursor.getString(cursor.getColumnIndex("downUrl")));
		info.setDuration(cursor.getLong(cursor.getColumnIndex("duration")));
		info.setId(cursor.getInt(cursor.getColumnIndex("id")));
		info.setPath(cursor.getString(cursor.getColumnIndex("path")));
		info.setPlayProgress(cursor.getLong(cursor.getColumnIndex("playProgress")));
		info.setSid(cursor.getString(cursor.getColumnIndex("sid")));
		info.setSize(cursor.getLong(cursor.getColumnIndex("size")));
		info.setSizeStr(cursor.getString(cursor.getColumnIndex("sizeStr")));
		info.setTitle(cursor.getString(cursor.getColumnIndex("title")));
		info.setType(cursor.getInt(cursor.getColumnIndex("type")));
		info.setValid(cursor.getInt(cursor.getColumnIndex("valid")));
		return info;
	}
</pre><pre code_snippet_id="1589502" snippet_file_name="blog_20160226_4_9480407" name="code" class="java">1.第一种情况 行赋值错误album 写成了albumid

info.setAlbum(cursor.getString(cursor.getColumnIndex("albumid"))) 

 2.第二种情况 cursor获取值时引用方法错误getString() 变为了getInt() 

info.setAlbum(cursor.getInt(cursor.getColumnIndex("albumid"))) 
</pre><pre code_snippet_id="1589502" snippet_file_name="blog_20160226_7_2609544" name="code" class="java">3.第三种情况 获取到的值是列值 getString()写成了 getColummnName()
</pre><pre code_snippet_id="1589502" snippet_file_name="blog_20160226_9_1801965" name="code" class="java">
info.setAlbum(cursor.getColummnName(cursor.getColumnIndex("albumid")))

 
就总结这几点 ,其实细心一点就没有什么问题了


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值