2014-11-19 3 views
1

Я пытался понять, как SQLite DB работает в android. я сделал простое приложение, которое использует камеру, чтобы сделать фотографию и отобразить ее на экране ... какой id нравится делать, так же хранить описание фотографии тоже - и лучший способ, которым я знаю, как это сделать, - это a db. Но у меня возникли проблемы с пониманием того, как сохранить изображение.Android - Сохранение пути файла изображения камеры в SQLite db.

изображение с камеры довольно крупное, поэтому я не хочу хранить его в БД в виде капли. Я занимаюсь поиском пути к файлу в виде текстового поля в базе данных, и я думаю, что SQL является правильным для сохранения пути. это из моего DBAdapter класса: метод

private static final String DATABASE_CREATE_SQL = 
     "create table " + DATABASE_TABLE 
     + " (" + KEY_ROWID + " integer primary key autoincrement, " 
     + KEY_USERNAME + " text, " 
     + KEY_DATE + " text, " 
     + KEY_PHOTO_DESCRIPTION + " text, " 
     + KEY_IMAGE_PATH + " text" 
     + ");"; 

вставки:

public long insertRow(String username, String date, String photoDesc, String imagePath) { 
    ContentValues initialValues = new ContentValues(); 
    initialValues.put(KEY_USERNAME, username); 
    initialValues.put(KEY_DATE, date); 
    initialValues.put(KEY_PHOTO_DESCRIPTION, photoDesc); 
    initialValues.put(KEY_IMAGE_PATH, imagePath); 

    // Insert it into the database. 
    return db.insert(DATABASE_TABLE, null, initialValues); 
} 

тогда в моей MainActivity - onActivityResult() для получения изображения с камеры:

private void receiveImage(int resultCode) { 
    if(resultCode == Activity.RESULT_OK) { 
     getContentResolver().notifyChange(imageUri, null); 
     ContentResolver contentResolver = getContentResolver(); 
     try { 
      imageBitmap = MediaStore.Images.Media.getBitmap(contentResolver, imageUri); 
     } catch(Exception e) { 
      Toast.makeText(TakePhotoActivity.this, "failed to load", Toast.LENGTH_LONG).show(); 
      Log.e(LOG_TAG, e.toString()); 
     } 
    } 
} 

это как я добавляю строку в базу данных:

public void onClick_AddRecord(View v) { 
    long newId = myDb.insertRow("User", "00/00/0000", 
      "image description", imageUri); 
    populateListViewFromDB(); 
} 

теперь проблема - если я создаю операцию для просмотра всей информации, хранящейся в строке, как мне получить доступ к изображению и назначить его ImageView?

ответ

0

Пожалуйста, проверьте, если это поможет:

  1. Напишите метод, который будет возвращать все строки из таблицы изображений в курсор.
  2. Создайте адаптер курсора и привяжите его к списку.
  3. Используйте ImageView.setImageURI(), чтобы связать URI изображения с изображением.
Смежные вопросы