Я не уверен, почему, но каждый элемент в моей базе данных дублируется примерно 30 раз, хотя я только вставляю каждый элемент один раз. Я думал, возможно, это может быть результатом метода walkdir(), который вставляет в базу данных для каждого файла с расширением .mp3 в указанной корневой папке или, возможно, в результате моей наивности в отношении утилизации ListView.SQLite insert добавляет одну и ту же запись несколько раз
public class SQLHelper extends SQLiteOpenHelper{
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "MusicDatabase.db";
private static final String SQL_CREATE_TABLE =
"CREATE TABLE "+
FeedEntry.TABLE_NAME+" ("+
FeedEntry._ID+" INTEGER PRIMARY KEY,"+
FeedEntry.KEY_FILENAME+" TEXT UNIQUE,"+
FeedEntry.KEY_SONGNAME+" TEXT)";
private static final String SQL_DELETE_TABLE = "DROP TABLE IF EXISTS "+ SQLContract.FeedEntry.TABLE_NAME;
public SQLHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_TABLE);
}
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(SQL_DELETE_TABLE);
onCreate(db);
}
public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}/*
public List<Song> getAllSongs(){
List<Song> songs = new LinkedList<Song>();
String query = "SELECT * FROM "+FeedEntry.TABLE_NAME;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(query,null);
Song song = null;
if(cursor.moveToFirst()){
do {
song = new Song();
song.setId(Integer.parseInt(cursor.getString(0)));
song.setFileName(cursor.getString(1));
song.setSongName(cursor.getString(2));
songs.add(song);
}while(cursor.moveToNext());
}
return songs;
}*/
public void addSong(File file){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(FeedEntry.KEY_FILENAME, file.getPath());
values.put(FeedEntry.KEY_SONGNAME, file.getName());
db.insert(FeedEntry.TABLE_NAME,null,values);
}
public Cursor read(String sort, String direction){
SQLiteDatabase db = this.getReadableDatabase();
String[] projection = {
FeedEntry._ID,
FeedEntry.KEY_FILENAME,
FeedEntry.KEY_SONGNAME,
};
String sortOrder = sort+direction;
Cursor c = db.query(
FeedEntry.TABLE_NAME,
projection,null,null,null,null,
sortOrder
);
return c;
}
}
Вы предполагаете, что мы все знаем, о чем вы говорите, или я пропустил последний эпизод или что-то в этом роде. – eduyayo
Код для вставки, кажется, в порядке. Каково содержание корневого каталога и что повторяется в списке? – eduyayo
И когда называется 'walkdir'? –