<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")))
就总结这几点 ,其实细心一点就没有什么问题了