title: How to implement SQLite database to store Bitmap Image and Text?
body: <p>hello all i am developing an android application which listen to incoming whatsapp notification and show it in listView using <code>NotificationListenerService</code>. i need help in sqlite database to store notifications and retrieve data and show in listView.  data is one Bitmap image and text string...
  following is code am trying..</p>
  
  <p>databaseHandler</p>
  
  <pre><code>public class DatabaseHandler extends SQLiteOpenHelper{
  // Database Version
  private static final int DATABASE_VERSION = 1;
  // Database Name
  private static final String DATABASE_NAME = "wnoti";
  //  table name
  private static final String TABLE_NOTI = "noti";
  //table attributes
  private static final String KEY_ID = "id";
  private static final String KEY_NAME = "name";
  private static final String KEY_POTO = "poto";
  
  public DatabaseHandler(Context context){
      super(context,DATABASE_NAME,null,DATABASE_VERSION);
  
  }
  //create table
  @Override
  public void onCreate(SQLiteDatabase db){
      String CREATE_TABLE=" CREATE TABLE "+TABLE_NOTI + "("
              + KEY_ID +" INTEGER PRIMARY KEY,"
              + KEY_NAME +" TEXT,"
              + KEY_POTO  +" BLOB" + ")";
      db.execSQL(CREATE_TABLE);
  }
  
  //upgrading database
  @Override
  public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
      // Drop older table if existed
      db.execSQL("DROP TABLE IF EXISTS " + TABLE_NOTI);
  
      // Create tables again
      onCreate(db);
  }
  //Insert values to the table contacts
  public void addContacts(Model model){
      SQLiteDatabase db = this.getReadableDatabase();
      ContentValues values=new ContentValues();
  
      values.put(KEY_NAME, model.getName());
      values.put(KEY_POTO, model.getImage());
  
  
      db.insert(TABLE_NOTI, null, values);
      db.close();
  }
  
  public List&lt;Model&gt; getAllnoti() {
      List&lt;Model&gt; notiList = new ArrayList&lt;Model&gt;();
      // Select All Query
      String selectQuery = "SELECT  * FROM " + TABLE_NOTI;
  
      SQLiteDatabase db = this.getWritableDatabase();
      Cursor cursor = db.rawQuery(selectQuery, null);
  
      // looping through all rows and adding to list
      if (cursor.moveToFirst()) {
          do {
              Model model = new Model();
              model.setID(Integer.parseInt(cursor.getString(0)));
              model.setName(cursor.getString(1));
              model.setImage(cursor.getBlob(2));
  
  
              // Adding notification to list
              notiList.add(model);
          } while (cursor.moveToNext());
      }
  
      // return notification list
      return notiList;
  }
  }
  
  
  my model class 
  </code></pre>
  
  <p>1st when i am working without sqlite database i use <code>Bitmap imaBitmap</code>
  then i change it to byte[]...</p>
  
  <pre><code>public class Model {
  String name;
  byte[] imaBitmap;
  int _id;
  
  public Model(){
  
  }
  public Model(int id,String name,byte[] imaBitmap)
  {
      this._id=id;
      this.name=name;
      this.imaBitmap=imaBitmap;
  }
  public Model(String name,byte[] imaBitmap){
      this.name=name;
      this.imaBitmap=imaBitmap;
  }
  // getting ID
  public int getID(){
      return this._id;
  }
  
  // setting id
  public void setID(int id){
      this._id = id;
  }
  
  public String getName() {
      return name;
  }
  
  public void setName(String name) {
      this.name = name;
  }
  
  public byte[] getImage() {
      return imaBitmap;
  }
  
  public void setImage(byte[] imaBitmap) {
      this.imaBitmap = imaBitmap;
  }
  }
  </code></pre>
  
  <p>now here is the problem....
  i just want this data<code>String title = intent.getStringExtra("title");
              String text = intent.getStringExtra("text");
              byte[] byteArray = intent.getByteArrayExtra("icon");</code>
  into my db my mind is totally blocked..................</p>
  
  <pre><code>public class MainActivity extends Activity {
    private DatabaseHandler db;
  ListView list;
  CustomListAdapter adapter;
  ArrayList&lt;Model&gt; modelList;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      modelList = new ArrayList&lt;Model&gt;();
      adapter = new CustomListAdapter(getApplicationContext(), modelList);
      list = (ListView) findViewById(R.id.list);
      list.setAdapter(adapter);
      LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, new IntentFilter("Msg"));
  
  }
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
          case R.id.action_settings:
              Intent intent = new Intent(
                      "android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"
              );
              startActivity(intent);
              return true;
          default:
              return super.onOptionsItemSelected(item);
  
      }
  }
  
  private BroadcastReceiver onNotice = new BroadcastReceiver() {
      @Override
      public void onReceive(Context context, Intent intent) {
          // String pack = intent.getStringExtra("package");
          String title = intent.getStringExtra("title");
          String text = intent.getStringExtra("text");
          //int id =intent.getIntExtra("icon",0);
          Context remotePackageContext = null;
          try {
          //                    remotePackageContext = 
          getApplicationContext().createPackageContext(pack, 0);
          //                Drawable icon = 
           remotePackageContext.getResources().getDrawable(id);
          //                if(icon !=null) {
         //                    ((ImageView) 
            findViewById(R.id.imageView)).setBackground(icon);
              //}
              byte[] byteArray = intent.getByteArrayExtra("icon");
           //   Bitmap bmp = null;
            //  if (byteArray != null) {
             //     bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
  
            //  }
  
              Model model = new Model();
            //  model.setName(title + "" + text);
             // model.setImage(byteArray);
                db.addContacts(new Model(title + "" + text,byteArray));
              Toast.makeText(getApplicationContext(),"Saved ",Toast.LENGTH_LONG).show();
  
              if (modelList != null) {
                  modelList.add(model);
                  adapter.notifyDataSetChanged();
              } else {
                  modelList = new ArrayList&lt;Model&gt;();
                  modelList.add(model);
                  adapter = new CustomListAdapter(getApplicationContext(), modelList);
                  list = (ListView) findViewById(R.id.list);
                  list.setAdapter(adapter);
              }
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      };
      }
  </code></pre>
  
  <p>i think i am doing many things wrong i am learning android plz teach me </p>