Работа с Cursor
Здравствуйте. Пишу небольшое приложение – справочник грибов. Есть 3 класса – 1 MainActivity с Listview , 2 класс - Information – будет выводить информацию о грибах в зависимости от того на какой элемент ListView кликнул пользователь, информация о каждом грибе будет браться из БД, 3 класс - работа с Базой данных SqLite.
Вот код моей Базы данных:
public class DataBaseHelper extends SQLiteOpenHelper implements BaseColumns {
private SQLiteDatabase sqdb;
private static final String DATABASE_NAME = "mushrooms.db";
private static final int DATABASE_VERSION = 1;
public static final String TABLE_NAME = "mushrooms_table";
public static final String Mushroom1 = "mushroom1";
public static final String Mushroom2 = "mushroom2";
private static final String SQL_CREATE_ = "create table " + TABLE_NAME +" ("
+ DataBaseHelper._ID + " integer primary key autoincrement,"
+ Mushroom1 + " text,"
+ Mushroom2 + " text" + ");";
public DataBaseHelper(Context context) {
super(context , DATABASE_NAME , null , DATABASE_VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_);
db.beginTransaction();
try {
ContentValues cv = new ContentValues();
cv.put(Mushroom1 , "Білий гриб - один з найбільш цінних грибів. Росте в хвойних, " +
"листяних і змішаних лісах, звичайно на прогалинах і " +
"лісових узліссях, у рідкому молодому ялиннику, " +
"на вологому ґрунті з червня по жовтень. " +
"Забарвлення шляпки в дубових лісах темно-бура," +
" у листяних - світло-бура, у соснових - темно-бура з фіолетовим відтінком," +
" у ялинових - червонясто-бура. Нижня сторона капелюшка в молодих білих грибів біла, " +
"з віком жовтіє і нарешті стає жовтувато-зеленою.");
cv.put(Mushroom2 , "Існує кілька різновидів моховиків. " +
"Найбільш відомі жовто-бурий і зелений моховик. " +
"Жовто-бурий моховик росте в соснових лісах. " +
"Забарвлення сухого бархатистого капелюшка жовте чи жовтувато-буре. " +
"Зелений чи глухий моховик росте в хвойних і листяних лісах. " +
"Забарвлення бархатистого капелюшка жовтувато-зеленувате чи коричнювато - зеленувате. " +
"Нижня сторона капелюшка і м'якоть жовтуваті. М'якоть на зламі синіє. " +
"Моховики використовуються для готування других блюд (найкраще жарити) і маринування. " +
"При сушінні моховики чорніють.");
sqdb.insert(TABLE_NAME , null , cv);
db.setTransactionSuccessful();
}finally {
db.endTransaction();
}
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
public String getInformation(int id) {
sqdb = this.getReadableDatabase();
String selection = "_id = ?";
String[] selectionArgs = new String[] {String.valueOf(id)};
Cursor cursor = sqdb.query(TABLE_NAME , null , selection , selectionArgs , null , null, null);
// работа с курсором
sqdb.close();
cursor.close();
}
}
Так вот вопрос , видите я пишу метод public String getInformation(int id), это метод будет вызываться во 2 классе - Information для того чтобы в зависиомсти от выбраного пункта бралась инфа из бд , с очередью я разобрался, теперь надо как то извлечь данные правильно?
будет ли правильно дописать в этод метод такой код:
if(cursor != null) {
if (cursor.moveToFirst()) {
do {
String mush = cursor.getString(cursor.getColumnIndex(Mushroom1));
}while (cursor.moveToNext());
}
}
return mush;
Мне нужно чтобы в зависимости от id выводило информацию. Подскажите пожалуйста как правильно тут использовать getColumnIndex.