Здравствуйте! Пишу приложение "справочник грибов" . На главной активности у нас есть listview , и в зависимости от того, на какой гриб в списке мы кликнули запускаеться новое активити и выводиться его описание ( определяем по id). Описание грибов я наполнил через SqliteBrowser (поля: _id , mushroom) и в программе подлючаю Бд следующим образом:
package com.example.bd;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteException;
import android.database.sqlite.SQLiteOpenHelper;
import android.provider.BaseColumns;
import android.util.Log;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.SQLException;
public class DataBaseHelper extends SQLiteOpenHelper implements BaseColumns {
private static String DB_PATH = "/data/data/com.example.bd/databases/";
private static final String DB_NAME = "mushrooms.db";
private SQLiteDatabase myDataBase;
private static final int DATABASE_VERSION = 1;
private final Context myContext;
public static final String TABLE_NAME = "mushrooms_table";
DataBaseHelper(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
this.myContext = context;
}
public void createDatabase() throws IOException {
boolean dbexits = checkDataBase();
if(dbexits) {
}else {
this.getReadableDatabase();
try {
copyDatabase();
} catch (IOException e) {
throw new Error("Error copying database");
}
}
}
private boolean checkDataBase(){
SQLiteDatabase checkDB = null;
try{
String myPath = DB_PATH + DB_NAME;
checkDB = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY);
}catch(SQLiteException e){
}
if(checkDB != null){
checkDB.close();
}
return checkDB != null ? true : false;
}
private void copyDatabase() throws IOException{
Log.i("Database",
"Новая база данных копируется на устройство!");
int length;
InputStream myInput = myContext.getAssets().open(DB_NAME);
String outFileName = DB_PATH + DB_NAME;
OutputStream myOutput = new FileOutputStream(outFileName);
byte[] buffer = new byte[1024];
while ((length = myInput.read(buffer))>0) {
myOutput.write(buffer , 0 , length);
}
myOutput.flush();
myOutput.close();
myInput.close();
Log.i("Database",
"Новая база данных скопирована на устройство");
}
public void openDataBase() throws SQLException {
String myPath = DB_PATH + DB_NAME;
myDataBase = SQLiteDatabase.openDatabase(myPath , null , SQLiteDatabase.OPEN_READWRITE);
}
public synchronized void close() {
if (myDataBase != null) {
myDataBase.close();
}
super.close();
}
public void getInfromation(int id) {
Information inf = new Information();
myDataBase = this.getReadableDatabase();
String selection = "_id = ?";
String[] selectionArgs = new String[]{String.valueOf(id)};
Cursor cursor = myDataBase.query(TABLE_NAME , null , selection , selectionArgs , null , null , null);
try {
if (cursor.moveToFirst()) inf.textView.setText(cursor.getColumnIndex("mushroom"));
}finally {
cursor.close();
}
myDataBase.close();
}
/* public Cursor getInfromation(int id) {
String selection = "_id = ?";
String[] selectionArgs = new String[]{String.valueOf(id)};
return myDataBase.query(TABLE_NAME , null , selection , selectionArgs , null , null , null);
}*/
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
Вот в чем вопрос: видите метод getInformation? Этот метод делает выборку из БД чтобы определить на какой id мы нажали, но дело в том что если этот метод вызвать в активити, где будет выводиться описание, то оно вообще ничего не выведет в textView , скажите как правильно мне вывести информацию ( как исправить метод) ?