Имеется база данных и активити с компонентом listview как из готовой базы вывести в listview элементы из таблицы? Базу подключаю вот так
public class ExternalDbOpenHelper extends SQLiteOpenHelper
{
private static final String DATABASE_NAME = "Busstops.sqlite"; // Название файла с БД
private static final int DATABASE_VERSION = 1; //Версия БД
private static final String SP_KEY_DB_VER = "db_ver";
private final Context mContext;
public ExternalDbOpenHelper(Context context, String DB_NAME) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
mContext = context;
initialize();
}
/**
* Инициализация БД. Создание новой если ранее не существовала.
*/
private void initialize() {
if (databaseExists()) {
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
int dbVersion = prefs.getInt(SP_KEY_DB_VER, 1);
if (DATABASE_VERSION != dbVersion) {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
if (!dbFile.delete()) {
// Log.w(TAG, "Невозможно обновить БД");
}
}
}
if (!databaseExists()) {
createDatabase();
}
}
/**
* Проверка существования файла БД. Если существует - возвращает true.
* @return
*/
private boolean databaseExists() {
File dbFile = mContext.getDatabasePath(DATABASE_NAME);
return dbFile.exists();
}
/**
* Создание БД, копирование файла из Assets.
*/
private void createDatabase() {
String parentPath = mContext.getDatabasePath(DATABASE_NAME).getParent();
String path = mContext.getDatabasePath(DATABASE_NAME).getPath();
File file = new File(parentPath);
if (!file.exists()) {
if (!file.mkdir()) {
// Log.w(TAG, "Невозможно создать папку БД");
return;
}
}
InputStream is = null;
OutputStream os = null;
try {
is = mContext.getAssets().open(DATABASE_NAME);
os = new FileOutputStream(path);
byte[] buffer = new byte[1024];
int length;
while ((length = is.read(buffer)) > 0) {
os.write(buffer, 0, length);
}
os.flush();
SharedPreferences prefs = PreferenceManager
.getDefaultSharedPreferences(mContext);
SharedPreferences.Editor editor = prefs.edit();
editor.putInt(SP_KEY_DB_VER, DATABASE_VERSION);
editor.commit();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
@Override
public void onCreate(SQLiteDatabase db) {
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion,
int newVersion) {
}
}
и вот код активности
ListView lv1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.actstop1);
lv1 = (ListView) findViewById(R.id.lv1);
Алгоритм такой:
ListView
на основе CursorAdapter
. Используете уже готовый SimpleCursorAdapter
, если его функциональность вас устраивает или пишите собственный кастомный адаптер-наследник CursorAdapter
.SQLiteOpenHelper
включающий GRUD-операции с вашей базой данных (добавление, удаление, обновление и запросы (чтение) в БД.Cursor
) из БД через GRUD-операции созданного в п.2 класса (метод guery()
)ListView
и передаете полученный курсор.Для взаимодействия между адаптером и БД настоятельно рекомендуется использовать класс CursorLoader
Пример реализации списка ListView с заполнением из базы SQLite
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрый день, дорогие друзьяРаботаю со Spring 4 и встал вопрос: до этого все вьюхи помещал в папку resources, но прочитал, что можно поменять путь и размещать...
у меня есть класс Patent