2016-06-01 3 views
0

sqliteデータベースから 'penyakit'テーブルに 'images'列の画像を表示したいとします。その画像はTabGambar.javaを介して表示されます。sqliteからdrawableを通して画像を表示する方法

私の友人は、画像のアドレスをデータベースに入れ、その画像をドロウアブルに保存することができたと言いました。しかし、私はそれがどのように機能するのか分かりません。私は文字列uri drawableを使用しようとしましたが、すべての画像を1つしか表示できません。

以前は、私は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

イメージのパスを保存して、挿入したり取り出したりするのが簡単です。そうしないと、db内のblobフィールドを取得し、イメージをbyte []形式で保存する必要があります。 – Nisarg

+0

そのコードを知ることはできますか? @Nisarg –

+0

バイトの形式[]またはイメージパス? – Nisarg

答えて

0

私はあなたのデータベースに画像を保存したい場合は、保存する必要があり、ここでは基本的に正確な詳細のわからないんだけどバイトの「ブロブ」としての情報

DBとビットマップから読み込むときはバイトとビットマップの間で変換し、DBに書き込むときはバイトを変換する必要があります。これはあなたが探しているものであり、あなたは私を聞かせてより詳細なサポートをご希望の場合は

A URIは通常、ファイルがサーバー/ Webサイトなど

上のどこかにお使いのデバイスのストレージから来るかのために使用されています知っていると私は詳細を提供することができます。

+0

はい、そうです。しかし、データベースを遅くして、たくさんのデータを取ってしまうのではないでしょうか? @seanAshmore –

+0

これは、使用している画像の数によって異なりますが、ほとんどのユースケースで十分に機能するはずです。 – seanAshmore

+0

約100枚の画像を使用しています。大丈夫です。あなたは私にそれについての詳細を教えてもらえますか? @seanAshmore –

関連する問題