title: Refresh ListView After SQLite update operations
body: <p>Creating a notepad application with CRUD operations. </p>
  
  <p>I am trying to update the <code>ListView</code> item which contains titles for notes and on clicking open up the  respective Notes. </p>
  
  <p>The contentvalues are succesfully showing the new values. </p>
  
  <p>But the <code>ListView</code> is not updated with the updated note and instead continues showing the old one.         </p>
  
  <p>Here is the updated DBHandler:</p>
  
  <pre><code>   public class DBhandler extends SQLiteOpenHelper {
      private SQLiteDatabase db;
      private static final int DATABASE_VERSION = 3;
      private static final String DATABASE_NAME = "notes.db";
      public static final String TABLE_NAME = "notes";
      public static final String KEY_ID = "_id";
      public static final String DATA = "data";
      public static final String DATE = "date";
      public static final String TITLE = "title";
      String CREATE_TABLE = "create table " + TABLE_NAME + "(" + KEY_ID + " integer primary key autoincrement,"
              + DATA + " text not null,"
              + TITLE + " text not null, "
              + DATE + " date "
              + " ) ; ";
  
      public DBhandler(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
      }
  
      @Override
      public void onCreate(SQLiteDatabase db) {
          this.db = db;
          db.execSQL(CREATE_TABLE);
      }
  
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
          this.db = db;
          String DROP = "DROP TABLE IF EXISTS " + TABLE_NAME;
          db.execSQL(DROP);
          onCreate(db);
      }
  
      public void addNote(Note note) {
          db = this.getWritableDatabase();
          ContentValues values = new ContentValues();
          String date = cal();
          values.put(DATA, note.getData());
          values.put(TITLE, note.getTitle());
          values.put(DATE, String.valueOf(date));
          db.insert(TABLE_NAME, null, values);
  
  
      }
  
  
      public void delete() {
          db = getWritableDatabase();
          db.execSQL("DELETE FROM " + TABLE_NAME);
      }
  
      public void update(int id, String note, String title) {
  
          String date = cal();
          db = this.getWritableDatabase();
       //   db.rawQuery("UPDATE notes set _id=id,data=note,title=title,date=date where _id=id",null);
  
          ContentValues values = new ContentValues();
          values.put(KEY_ID, id);
          values.put(DATA, note);
          values.put(TITLE, title);
          values.put(DATE, String.valueOf(date));
         // Log.d("ValueNew", values.toString());
          db.update(TABLE_NAME, values, KEY_ID + " = " + id, null);
          Cursor cursor=db.rawQuery("SELECT * FROM notes",null);
          cursor.moveToFirst();
        //  Log.d("DATABASE",cursor.getString(0)+ " "+cursor.getString(1)+ " "+cursor.getString(2));
  
          //  db.update();
      }
  
      public void deleteItem(int id) {
          String DEL = "DELETE FROM " + TABLE_NAME + " " + "WHERE  _id = " + id;
          db = getWritableDatabase();
          db.execSQL(DEL);
      }
  
      public String cal() {
          Calendar ci = Calendar.getInstance();
          String date = " " + ci.get(Calendar.YEAR) + "-" +
                  (ci.get(Calendar.MONTH) + 1) + "-" +
                  ci.get(Calendar.DAY_OF_MONTH) + " " +
                  ci.get(Calendar.HOUR_OF_DAY) + ":" +
                  ci.get(Calendar.MINUTE);
          return date;
      }
  
  
  }
  </code></pre>
  
  <p>Here is the EditNote class which calls update();</p>
  
  <pre><code> public class EditNote extends AppCompatActivity {
      Button btn;
      Button clear;
      EditText editNote;
      EditText editTextTitle;
      DBhandler dBhandler;
  
      @Override
      protected void onCreate(@Nullable Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.notecreate);
          editNote = (EditText) findViewById(R.id.note);
          btn = (Button) findViewById(R.id.save);
          clear = (Button) findViewById(R.id.clear);
          editTextTitle = (EditText) findViewById(R.id.title);
          Bundle bundle = getIntent().getExtras();
          String newTitle = bundle.getString("newtitle");
          String newdata = bundle.getString("newdata");
          final int id = bundle.getInt("CursorId");
          dBhandler = new DBhandler(this);
          editTextTitle.setText(newTitle);
          editNote.setText(newdata);
          btn.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  String title = editTextTitle.getText().toString();
                  String noteContent = editNote.getText().toString();
                  // Log.d("IDNote",String .valueOf(id));
                  Note note = new Note(id, noteContent, title);
                  note.setId(id);
                  note.setTitle(title);
                  note.setData(noteContent);
  
                      dBhandler.update(id,noteContent,title);
                         // new ListNotesActivity().display();
                      Toast.makeText(getApplicationContext(), "Saved", Toast.LENGTH_SHORT).show();
  
              }
          });
          clear.setOnClickListener(new View.OnClickListener() {
              @Override
              public void onClick(View v) {
                  new SaveNoteActivity().clear(editNote, editTextTitle);
              }
          });
      }
  
  }
  </code></pre>
  
  <p>And here is the ListNotesActivityClass :</p>
  
  <pre><code> public class ListNotesActivity extends AppCompatActivity {
      ListView mListView;
      Toolbar toolbar;
      SimpleCursorAdapter simpleCursorAdapter;
      DBhandler dBhandler;
      Cursor c;
  
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.noteslist);
          toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
          mListView = (ListView) findViewById(R.id.notesList);
          registerForContextMenu(mListView);
          display();
          mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
              @Override
              public void onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id) {
                  Cursor cursor = (Cursor) mListView.getItemAtPosition(position);
                  String data = (cursor.getString(1));
                  Intent intent = new Intent(ListNotesActivity.this, ShowNote.class);
                  intent.putExtra("Note", data);
                  startActivity(intent);
  
  
              }
          });
  
      }
  
  
      @Override
      public boolean onContextItemSelected(MenuItem item) {
          AdapterView.AdapterContextMenuInfo adapterContextMenuInfo = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
          int pos = adapterContextMenuInfo.position;
          c = ((SimpleCursorAdapter) mListView.getAdapter()).getCursor();
          c.moveToPosition(pos);
  
          switch (item.getItemId()) {
              case R.id.update:
                  String title=c.getString(2);
                  String data=c.getString(1);
                  Intent intent=new Intent(ListNotesActivity.this,EditNote.class);
                  Bundle extras=new Bundle();
                  extras.putInt("CursorId",pos);
                  extras.putString("newtitle",title);
                  extras.putString("newdata",data);
                  intent.putExtras(extras);
                  startActivity(intent);
                  Toast.makeText(this, "Update", Toast.LENGTH_SHORT).show();
  
                  break;
              case R.id.deleteItem:
                  dBhandler.getWritableDatabase();
                  new DeleteItemClass().doInBackground(c);
                  break;
          }
          return super.onContextItemSelected(item);
      }
  
      @Override
      public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
          super.onCreateContextMenu(menu, v, menuInfo);
          MenuInflater menuInflater = getMenuInflater();
          menuInflater.inflate(R.menu.contextmenu, menu);
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          MenuInflater inflater = getMenuInflater();
          inflater.inflate(R.menu.listmenu, menu);
          return true;
      }
  
          public void display() {
              mListView = (ListView) findViewById(R.id.notesList);
              dBhandler = new DBhandler(this);
              SQLiteDatabase db = dBhandler.getReadableDatabase();
              Cursor cursor = db.rawQuery("SELECT *  from " + DBhandler.TABLE_NAME, null);
              String[] titles = new String[]{DBhandler.TITLE, DBhandler.DATE};
               simpleCursorAdapter = new SimpleCursorAdapter(this, R.layout.notetitle, cursor, titles, new int[]{R.id.noteTitleText, R.id.date}, 0);
            // simpleCursorAdapter.notifyDataSetChanged();
              mListView.setAdapter(simpleCursorAdapter);
              simpleCursorAdapter.notifyDataSetChanged();
  
  
          }
      @Override
      protected void onResume() {
          super.onResume();
          display();
      }
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          int id = item.getItemId();
          switch (id) {
              case R.id.add:
                  Intent intent = new Intent(ListNotesActivity.this, SaveNoteActivity.class);
                  startActivity(intent);
                  break;
              case R.id.delete:
                  dBhandler.getWritableDatabase();
                  SQLiteDatabase db = dBhandler.getWritableDatabase();
                  Cursor cursor = db.rawQuery("Select * from notes", null);
                  if (cursor.getCount() &gt; 0)
                      dialog();
                  else {
                      Toast.makeText(this, "No items to delete", Toast.LENGTH_SHORT).show();
                  }
                  break;
              case R.id.settings:
                  Intent intent1 = new Intent(ListNotesActivity.this, SettingsActivity.class);
                  startActivity(intent1);
                  break;
          }
  
          return super.onOptionsItemSelected(item);
      }
  
  
      public void dialog() {
          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle("Confirm");
          builder.setMessage("Are You Sure to Delete?");
          builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  new DeleteClass().doInBackground();
              }
          });
          builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
              @Override
              public void onClick(DialogInterface dialog, int which) {
                  dialog.dismiss();
              }
          });
          AlertDialog alertDialog = builder.create();
          alertDialog.show();
  
  
      }
  
  
      private class DeleteClass extends AsyncTask&lt;Void, Void, DBhandler&gt; {
          @Override
          protected DBhandler doInBackground(Void... params) {
              dBhandler.delete();
              display();
              return dBhandler;
  
  
          }
  
      }
  
      private class DeleteItemClass extends AsyncTask&lt;Cursor, Void, DBhandler&gt; {
          @Override
          protected DBhandler doInBackground(Cursor... params) {
              dBhandler.deleteItem(Integer.parseInt(c.getString(0)));
              display();
              return dBhandler;
          }
      }
  }
  </code></pre>
  
  <p>And the Note.java:</p>
  
  <pre><code>public class Note {
      String data;
      int id;
      String title;
      Note(){}
      Note(String title){
          this.title=title;
      }
      Note(String  data,String  title)
      {
          this.title=title;
          this.data=data;
      }
  
      public String getTitle() {
          return title;
      }
  
      public void setTitle(String title) {
          this.title = title;
      }
  
      Note( int id,String data,String  title){
          this.data=data;
          this.id=id;
          this.title=title;
  
      }
  
      public String getData() {
          return data;
      }
  
      public void setData(String data) {
          this.data = data;
      }
  
      public int getId() {
          return id;
      }
  
      public void setId(int id) {
          this.id = id;
      }
  }
  </code></pre>