2016-06-01 4 views
0

Я хочу отображать изображения из изображений «стол» из столбцов «sqlite» из базы данных sqlite. Это изображение отображается через TabGambar.java.как отображать изображения из sqlite через drawable

Мой друг сказал мне, что я могу поместить адрес изображения в базу данных и сохранить это изображение в drawable. Но я не понимаю, как это работает. Я попытался использовать строку uri drawable, но она может отображать только одно изображение для всех.

Раньше я искал ссылки на Google и находил так много учебников. Но я до сих пор не понимаю, какую часть я должен добавить или изменить. Может кто-нибудь помочь моей проблеме?

Это мои работы.

TabGambar.java

public class TabGambar extends Fragment { 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

     View view = inflater 
       .inflate(R.layout.tabgambar, container, false); 
     configureTextView(view); 

     return view; 
    } 

    private void configureTextView(View view) { 
     // TODO Auto-generated method stub 

     TextView namapenyakit = (TextView) view.findViewById(R.id.namapenyakit); 
     ImageView gambarpenyakit = (ImageView) view.findViewById(R.id.gambarpenyakit); 

      Bundle b = getActivity().getIntent().getExtras(); 
      if (b != null) 
      { 

       namapenyakit.setText(b.getString("nama_penyakit")); 


       String uri = "@drawable/ayam1"; 
       int imageResource = getResources().getIdentifier(uri, null, getActivity().getPackageName()); 
       Drawable res = getResources().getDrawable(imageResource); 
       gambarpenyakit.setImageDrawable(res); 

      } 
} 

} 

DBAdapter.java

public class DBAdapter extends SQLiteAssetHelper { 
//nama database, versi, dan nama tabel yang akan dibuat. 
private static final String DATABASE_NAME = "pakarayam"; 
private static final int DATABASE_VERSION = 1; 

private static final String tabel_gejala = "gejala"; 
public static final String kd_gejala = "kode_gejala"; 
public static final String nm_gejala = "nama_gejala"; 

private static final String tabel_penyakit = "penyakit"; 
public static final String kd_penyakit = "kode_penyakit"; 
public static final String nm_penyakit = "nama_penyakit"; 
public static final String deskripsi = "deskripsi"; 
public static final String solusi = "solusi"; 
public static final String gambar = "gambar"; 

private static final String tabel_rule = "rule"; 
public static final String kd_rule = "kode_rule"; 
public static final String ko_gejala = "kode_gejala"; 
public static final String ko_penyakit = "kode_penyakit"; 
public static final String nilai_mb = "nilai_mb"; 
public static final String nilai_md = "nilai_md"; 

private static DBAdapter dbInstance; 
private static SQLiteDatabase db; 

private DBAdapter(Context context) 
{ 
    super(context, DATABASE_NAME, null, DATABASE_VERSION); 
} 

public static DBAdapter getInstance(Context context) 
{ 
    if (dbInstance == null) 
    { 
    dbInstance = new DBAdapter(context); 
    db = dbInstance.getWritableDatabase(); 
    } 
    return dbInstance; 
} 

@Override 
public synchronized void close() 
{ 
    super.close(); 
    if (dbInstance != null) 
    { 
    dbInstance.close(); 
    } 
} 

public ArrayList<Gejala> getAllGejala() 
{ 
    ArrayList<Gejala> listGejala = new ArrayList<Gejala>(); 

    Cursor cursor = db.query(tabel_gejala, new String[] {kd_gejala, nm_gejala 
    }, null, null, null, null, nm_gejala); 
    if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
    Gejala gejala = new Gejala(); 
    gejala.setNama_gejala(cursor.getString(cursor 
       .getColumnIndexOrThrow(nm_gejala))); 
    gejala.setKode_gejala(cursor.getString(cursor 
       .getColumnIndexOrThrow(kd_gejala))); 


    listGejala.add(gejala); 

    } while (cursor.moveToNext()); 
    } 
    return listGejala; 

} 

public List<Gejala> Search(String Nama_gejala) 
{ 
    List<Gejala> listGejala = new ArrayList<Gejala>(); 

    Cursor cursor = db.query(tabel_gejala, new String[] { 
      kd_gejala, 
      nm_gejala }, 
      nm_gejala + " like ?", new String[] {"%"+ Nama_gejala +"%"}, null, null, null, null); 
    if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
     Gejala gejala = new Gejala(); 
     gejala.setNama_gejala(cursor.getString(cursor 
      .getColumnIndexOrThrow(nm_gejala))); 


     listGejala.add(gejala); 

    } while (cursor.moveToNext()); 
    } 
    return listGejala; 

} 

public List<Penyakit> getAllPenyakit() 
{ 
    List<Penyakit> listPenyakit = new ArrayList<Penyakit>(); 

    Cursor cursor = db.query(tabel_penyakit, new String[] {kd_penyakit, nm_penyakit, deskripsi, solusi, gambar 
    }, null, null, null, null, nm_penyakit); 
    if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
    Penyakit penyakit = new Penyakit(); 
    penyakit.setNama_penyakit(cursor.getString(cursor 
     .getColumnIndexOrThrow(nm_penyakit))); 
    penyakit.setDeskripsi(cursor.getString(cursor 
      .getColumnIndexOrThrow(deskripsi))); 
    penyakit.setSolusi(cursor.getString(cursor 
      .getColumnIndexOrThrow(solusi))); 
    penyakit.setGambar(cursor.getString(cursor 
      .getColumnIndexOrThrow(gambar))); 


    listPenyakit.add(penyakit); 

    } while (cursor.moveToNext()); 
    } 
    return listPenyakit; 

} 

public List<Penyakit> Searching (String Nama_penyakit) 
{ 
    List<Penyakit> listPenyakit = new ArrayList<Penyakit>(); 

    Cursor cursor = db.query(tabel_penyakit, new String[] { 
      kd_penyakit, 
      nm_penyakit, 
      deskripsi, 
      solusi, 
      gambar}, 
      nm_penyakit + " like ?", new String[] {"%"+ Nama_penyakit +"%"}, null, null, null, null); 
    if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
     Penyakit penyakit = new Penyakit(); 
     penyakit.setNama_penyakit(cursor.getString(cursor 
       .getColumnIndexOrThrow(nm_penyakit))); 
     penyakit.setDeskripsi(cursor.getString(cursor 
       .getColumnIndexOrThrow(deskripsi))); 
     penyakit.setSolusi(cursor.getString(cursor 
       .getColumnIndexOrThrow(solusi))); 
     penyakit.setGambar(cursor.getString(cursor 
       .getColumnIndexOrThrow(gambar))); 

     listPenyakit.add(penyakit); 

    } while (cursor.moveToNext()); 
    } 
    return listPenyakit; 

} 

public double getMB(/*int kode_rule,*/ String kode_gejala) 
{ 
    /* 
    Cursor cursor = db.query(tabel_rule, new String[] 
      {kd_rule, ko_gejala, ko_penyakit, nilai_mb, nilai_md 
    }, ko_gejala + " like ?", new String[] {"%"+ kode_gejala +"%"}, 
    null, null, null, null); 

    double mb = 0; 
    cursor.moveToFirst(); 
    mb = cursor.getDouble(cursor.getColumnIndexOrThrow(nilai_mb)); 
if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
     mb = cursor.getDouble(cursor.getColumnIndexOrThrow(nilai_mb)); 
    } while (cursor.moveToNext()); 
    } 
*/ 
     Cursor cursor = db.query(tabel_rule, new String[] { 
       kd_rule, 
       ko_gejala, 
       ko_penyakit, 
       nilai_mb, 
       nilai_md 
     }, ko_gejala + " = '"+kode_gejala+"'", null, null, null, null, null); 

     double mb = 0; 

     if(cursor != null){ 
      cursor.moveToFirst(); 
      while(!cursor.isAfterLast()){ 
       mb = cursor.getDouble(3); 
      } 
     } 

    return mb; 
} 

public double getMD(/*int kode_rule,*/ String kode_gejala) 
{ 
    Cursor cursor = db.query(tabel_rule, new String[] { 
      kd_rule, 
      ko_gejala, 
      ko_penyakit, 
      nilai_mb, 
      nilai_md 
    }, ko_gejala + " = '"+kode_gejala+"'", null, null, null, null, null); 

    double md = 0; 
// cursor.moveToFirst(); 
// md = cursor.getDouble(cursor.getColumnIndexOrThrow(nilai_md)); 
/* 
    if (cursor.getCount() >= 1) 
    { 
    cursor.moveToFirst(); 

    do 
    { 
     md = cursor.getDouble(cursor.getColumnIndexOrThrow(nilai_md)); 
    } while (cursor.moveToNext()); 
    } 
*/ 

    if(cursor != null){ 
     cursor.moveToFirst(); 
      md = cursor.getDouble(cursor.getColumnIndexOrThrow(nilai_md)); 
      System.out.print(nilai_md); 
    } 

    return md; 

} 

} 
+0

Вы можете сохранить свой путь изображения, который будет проще вставлять и извлекать, иначе вам нужно взять blob-поле в db и сохранить изображение в форме формы byte []. – Nisarg

+0

Могу ли я узнать код этого? @Nisarg –

+0

форма байта [] или путь изображения? – Nisarg

ответ

0

Я не уверен в точных деталях здесь, но в основном, если вы хотите хранить изображения в базе данных необходимо сохранять информацию как «blob» байтов.

Вам потребуется конвертировать между байтами и растровым изображением, когда вы читаете из БД и битмапа и байты, когда хотите записать в БД.

URI, как правило, используется для файла, исходящее от устройства хранения или где-то на сервере/сайте и т.д.

Если это то, что вы ищете, и вы хотели бы получить более подробную помощь просто дайте мне знаю, и я могу предоставить дополнительную информацию.

+0

Да, я имею в виду вот так. Но разве это не приведет к замедлению работы базы данных и получению большого количества данных? @seanAshmore –

+0

Это зависит от того, сколько изображений вы используете Я думаю, но он должен работать достаточно хорошо для большинства случаев использования. – seanAshmore

+0

Я использую около 100 изображений, хорошо, я попробую. Можете ли вы дать мне больше информации об этом? @seanAshmore –