Android: основные проблемы с базой данных sqlite - PullRequest
0 голосов
/ 10 апреля 2011

У меня возникли проблемы с реализацией базы данных sqlite в моем простом приложении для Android:

пользователь отображает список животных в Listview. При выборе животного пользователь попадает в действие «Животное», которое отображает изображение животного и дает ему варианты

  • просмотр Animal Bio
  • Назад

Пока все очень просто, верно?

У меня работает база данных, которая будет заполнять список видов животных. База данных в настоящее время выглядит как

Столовое животное- _Я БЫ, Имя

Таблица биографии _Я БЫ, Bio

Здесь я хотел бы получить полезные советы по моей проблеме или по улучшению моей реализации.

В настоящее время БД заполняется следующим образом

long populateDB(){      


    String[] animalName = {"Lion" "Zebra", "Tiger", "Gorilla",...};
    String[] animalBios = {"Found in the "...}

    ContentValues animalNameVals = new ContentValues();
    ContentValues animalBioVals = new ContentValues();

    long[] rowIds = new long[animalName.length];


    // Populate the animal table
    for(int i = 0; i < animalName.length; i++){
            animalNameVals.put(KEY_ANIMALNAME, animalName[i]);
            rowIds[i] = db.insert(ANIMAL_TABLE, null, animalNameVals);
        }

    // Populate the Bio table
    for(int j = 0; j < bios.length; j++){
        animalBioVals.put(KEY_BIO, bios[j]);
        rowIds[j] = db.insert(BIOS_TABLE, null, animalBioVals);
    }

    return rowIds[0];
}

И планировал уметь сообщать базе данных, какое животное в списке было выбрано, передавая дополнения с намерением, например, если позиция в listItemClick == 1, передать тигра и получить био тигра из базы данных.

Проблемы:

Затем на странице действий с животными есть getExtra () == tiger, сообщающий об активности, которую тигр был выбран из списка, и о загрузке этой био из БД ... ну, я не вижу эффективного способа реализации этой идеи и я изо всех сил пытаюсь сделать это.

Моя вторая головная боль возникает из-за добавления био в приложение из Db. Первоначально у меня был тестовый био, закодированный в строку, показанную в TextView. Есть способ извлечь строку из курсора и добавить ее в TextView id? Я понимаю, что мне понадобится какой-то адаптер, но я не понимаю, почему он не может быть таким простым, как setResource (R.id.bio) = bio.

Спасибо за чтение, и любая помощь очень ценится.

1 Ответ

0 голосов
/ 10 апреля 2011

Первая проблема : Прежде всего, я не уверен, почему у вас нет столбца Bio в таблице Animal?Поскольку никакая Bio не подходит для любого другого животного, кроме него самого, вы можете смело делать это.Делая это, вы можете запросить базу данных после выбора и передать весь объект (включая имя животного и био) к следующему действию и использовать его для получения вашей информации.Если это было неясно, дайте мне знать, и я попытаюсь объяснить это лучше.

Вторая проблема : Вы можете получить значения из таблиц (там также Strings), используя Cursor.Чтобы получить строку, вы можете сделать что-то вроде этого, где cursor - это курсор с вашим результатом из базы данных:

 String bio;
// Move Cursor to its first element
if(cursor.moveToFirst()) {
     // Make sure the cursor is not null
    if(cursor != null) {
        bio = cursor.getString(cursor.getColumnIndex("Bio")));
    }
}

Sidenote : если я правильно прочитал код, кажется,что вы используете long для идентификации?Насколько я знаю, обычные вещи - это идентификаторы integers.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...