简体   繁体   English

如何显示从sqlite到drawable的图像

[英]how to display images from sqlite through drawable

I want to display images from column 'images' in 'penyakit' table from sqlite database. 我想显示来自sqlite数据库中'penyakit'表中'images'列的图像。 That image display through TabGambar.java. 该图像通过TabGambar.java显示。

My friend told me than I can put address of image in database and save that image in drawable. 我的朋友告诉我,我可以将图像的地址存储在数据库中并将该图像保存在drawable中。 But I don't understand how it works. 但是我不明白它是如何工作的。 I have tried to use string uri drawable but it can only display one image for all. 我尝试使用字符串uri drawable,但是它只能显示一个图像。

Previously, I had been looking for references on google and find so many tutorials. 以前,我一直在Google上寻找参考资料,并找到了很多教程。 But I still don't get which part should I add or change. 但是我仍然不知道应该添加或更改哪一部分。 Can somebody help my problem? 有人可以解决我的问题吗?

This is my works. 这是我的作品。

TabGambar.java 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 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;

 }

}

I'm not sure of the exact details here but basically, if you want to store images in your database you must store the information as a 'blob' of bytes. 我不确定这里的确切细节,但是基本上,如果您要将图像存储在数据库中,则必须将信息存储为“ blob”字节。

You'll need to convert between bytes and Bitmap when you read from the DB and Bitmap and bytes when you want to write to the DB. 从数据库读取数据时,需要在字节和位图之间进行转换;而要写入数据库时​​,则需要在位图和字节之间进行转换。

A URI is usually used for a file coming from your device storage or somewhere on a server/website etc. URI通常用于来自设备存储或服务器/网站等位置的文件。

If this is what you're looking for and you'd like more detailed help just let me know and I can provide more info. 如果这是您想要的,并且您想要更详细的帮助,请告诉我,我可以提供更多信息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM