Вопрос

Я новичок в Android, работает над списком адаптеров прямо сейчас. Я знаю, какой тип адаптеров списков требуется _ID столбец для обработки данных. Я предоставляю столбец _id, но я не мог заставить его работать. Я следую на примере блокнота, так вот мой код:

Я создаю DB этим утверждением:

private static final String DB_TABLE = "radios";
public static final String KEY_NAME = "name";
public static final String KEY_URL = "url";
public static final String KEY_ROWID = "_id";

Частная статическая конечная строка db_create = "Create Table" + db_table + "(" + key_rowid + "Integer Первичный ключ AutoinCrement,« + key_name + »текст не NULL,« + key_url + »текст не нуль);

Использование класса DBHelper:

 private static class DBHelper extends SQLiteOpenHelper {

    DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {

        db.execSQL(DB_CREATE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                + newVersion + ", which will destroy all old data");
        db.execSQL("DROP TABLE IF EXISTS " + DB_TABLE);
        onCreate(db);
    }
}

Здесь я получаю все записи в БД:

public Cursor getAllRadios() {
    return db.query(DB_TABLE, new String[] {KEY_ROWID,KEY_NAME,KEY_URL}, null, null, null, null, null);
}

И мой адаптер:

String[] from = new String[] { DBAdapter.KEY_NAME };
    int[] to = new int[] { R.id.text1 };

    try{
     SimpleCursorAdapter radios = new SimpleCursorAdapter(this, R.layout.list_item, cursor , from, to); 
     setListAdapter(radios);
    }
    catch(Exception e){
     e.printStackTrace();
    }

Я не мог найти никаких проблем, но я все еще получаю нет такой столбцы как "_id" ошибка. Есть идеи?

Это было полезно?

Решение

HMM, ваш код SQL для создания таблицы выглядит хорошо для меня (даже если вы могли бы заключить имена столбцов в кавычках, просто чтобы быть увереными). Но, может быть, у вас уже есть существующая старая таблица, которая не обновляется? Просто чтобы быть уверенным: увеличивайте db_version и выполните снова.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top