title: RecyclerView does not update after deleting an item from sqlite?
body: <p>I have populated recyclerview from sqlite .when clicking each row ,row will delete from sqlite but recyclerview  not showing updated list after delete. Recycler view show updated list only after launching activity once again. My question is how to update the recycler view soon after deleting an item from the recylcerview without refresh.</p>
  
  <p>following are my code</p>
  
  <p>SecondActivity.java</p>
  
  <pre><code>import android.support.v7.app.AppCompatActivity;
  import android.os.Bundle;
  import android.support.v7.widget.LinearLayoutManager;
  import android.support.v7.widget.RecyclerView;
  
  import android.support.v7.widget.Toolbar;
  import android.view.Menu;
  import android.view.MenuItem;
  
  import java.util.ArrayList;
  import java.util.List;
  
  public class SecondActivity extends AppCompatActivity {
      DatabaseHelpher helpher;
      List&lt;DatabaseModel&gt; dbList;
  RecyclerView mRecyclerView;
      private RecyclerView.Adapter mAdapter;
      private RecyclerView.LayoutManager mLayoutManager;
  
      @Override
      protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_second);
          Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
          setSupportActionBar(toolbar);
          getSupportActionBar().setDisplayHomeAsUpEnabled(true);
  
  
          helpher = new DatabaseHelpher(this);
          dbList= new ArrayList&lt;DatabaseModel&gt;();
          dbList = helpher.getDataFromDB();
  
  
          mRecyclerView = (RecyclerView)findViewById(R.id.recycleview);
  
          mRecyclerView.setHasFixedSize(true);
  
          // use a linear layout manager
          mLayoutManager = new LinearLayoutManager(this);
          mRecyclerView.setLayoutManager(mLayoutManager);
  
          // specify an adapter (see also next example)
          mAdapter = new RecyclerAdapter(this,dbList);
          mRecyclerView.setAdapter(mAdapter);
  mAdapter.notifyDataSetChanged ();
      }
  
      @Override
      public boolean onCreateOptionsMenu(Menu menu) {
          // Inflate the menu; this adds items to the action bar if it is present.
          getMenuInflater().inflate(R.menu.menu_second, menu);
          return true;
      }
  
  
  
      @Override
      public boolean onOptionsItemSelected(MenuItem item) {
          switch (item.getItemId()) {
              case android.R.id.home:
                  finish();
                  return true;
          }
          return super.onOptionsItemSelected(item);
      }
  }
  </code></pre>
  
  <p>DatabaseHelpher.java</p>
  
  <pre><code>import android.content.ContentValues;
  import android.content.Context;
  import android.database.Cursor;
  import android.database.sqlite.SQLiteDatabase;
  import android.database.sqlite.SQLiteOpenHelper;
  import android.util.Log;
  import android.widget.Toast;
  
  import java.util.ArrayList;
  import java.util.List;
  
  public class DatabaseHelpher extends SQLiteOpenHelper {
      private static final String DATABASE_NAME="student";
      private static final int DATABASE_VERSION = 1;
      private static final String STUDENT_TABLE = "stureg";
      private static final String STU_TABLE = "create table "+STUDENT_TABLE +"(name TEXT,email TEXT primary key,roll TEXT,address TEXT,branch TEXT)";
  
  Context context;
  
      public DatabaseHelpher(Context context) {
          super(context, DATABASE_NAME, null, DATABASE_VERSION);
          this.context = context;
      }
  
      @Override
      public void onCreate(SQLiteDatabase db) {
  
          db.execSQL(STU_TABLE);
      }
  
      @Override
      public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  
          db.execSQL("DROP TABLE IF EXISTS " + STUDENT_TABLE);
  
          // Create tables again
          onCreate(db);
      }
  /* Insert into database*/
      public void insertIntoDB(String name,String email,String roll,String address,String branch){
          Log.d("insert", "before insert");
  
          // 1. get reference to writable DB
          SQLiteDatabase db = this.getWritableDatabase();
  
          // 2. create ContentValues to add key "column"/value
          ContentValues values = new ContentValues();
          values.put("name", name);
          values.put("email", email);
          values.put("roll", roll);
           values.put("address", address);
          values.put("branch", branch);
  
          // 3. insert
          db.insert(STUDENT_TABLE, null, values);
          // 4. close
          db.close();
          Toast.makeText(context, "insert value", Toast.LENGTH_LONG);
          Log.i("insert into DB", "After insert");
      }
  /* Retrive  data from database */
      public List&lt;DatabaseModel&gt; getDataFromDB(){
          List&lt;DatabaseModel&gt; modelList = new ArrayList&lt;DatabaseModel&gt;();
          String query = "select * from "+STUDENT_TABLE;
  
          SQLiteDatabase db = this.getWritableDatabase();
  Cursor cursor = db.rawQuery(query,null);
  
          if (cursor.moveToFirst()){
              do {
                  DatabaseModel model = new DatabaseModel();
                  model.setName(cursor.getString(0));
                  model.setEmail(cursor.getString(1));
                  model.setRoll(cursor.getString(2));
                  model.setAddress(cursor.getString(3));
                  model.setBranch(cursor.getString(4));
  
                  modelList.add(model);
              }while (cursor.moveToNext());
          }
  
  
          Log.d("student data", modelList.toString());
  
  
          return modelList;
      }
  
  
      /*delete a row from database*/
  
      public void deleteARow(String email){
          SQLiteDatabase db= this.getWritableDatabase();
          db.delete(STUDENT_TABLE, "email" + " = ?", new String[] { email });
          db.close();
      }
  
  }
  </code></pre>
  
  <p>DatabaseModel.java</p>
  
  <pre><code>public class DatabaseModel {
      private String name;
      private String roll;
      private String address;
      private String branch;
      private String email;
  
      public String getName() {
          return name;
      }
  
      public void setName(String name) {
          this.name = name;
      }
  
      public String getRoll() {
          return roll;
      }
  
      public void setRoll(String roll) {
          this.roll = roll;
      }
  
      public String getAddress() {
          return address;
      }
  
      public void setAddress(String address) {
          this.address = address;
      }
  
      public String getBranch() {
          return branch;
      }
  
      public void setBranch(String branch) {
          this.branch = branch;
      }
  
      public String getEmail() {
          return email;
      }
  
      public void setEmail(String email) {
          this.email = email;
      }
  }
  </code></pre>
  
  <p>RecyclerAdapter.java</p>
  
  <pre><code>import android.content.Context;
  import android.content.Intent;
  import android.os.Bundle;
  import android.support.v7.widget.RecyclerView;
  import android.view.LayoutInflater;
  import android.view.View;
  import android.view.ViewGroup;
  import android.widget.TextView;
  import android.widget.Toast;
  
  import java.util.ArrayList;
  import java.util.List;
  
  
  public class RecyclerAdapter extends RecyclerView.Adapter&lt;RecyclerAdapter.ViewHolder&gt; {
  
    static   List&lt;DatabaseModel&gt; dbList;
      static  Context context;
  
      static DatabaseHelper dh;
      RecyclerAdapter(Context context, List&lt;DatabaseModel&gt; dbList ){
          this.dbList = new ArrayList&lt;DatabaseModel&gt;();
          this.context = context;
          this.dbList = dbList;
  dh=new DatabaseHelper(context);
      }
  
      @Override
      public RecyclerAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  
          View itemLayoutView = LayoutInflater.from(parent.getContext()).inflate(
                  R.layout.item_row, null);
  
          // create ViewHolder
  
          ViewHolder viewHolder = new ViewHolder(itemLayoutView);
          return viewHolder;
      }
  
      @Override
      public void onBindViewHolder(RecyclerAdapter.ViewHolder holder, int position) {
  
          holder.name.setText(dbList.get(position).getName());
          holder.email.setText(dbList.get(position).getEmail());
  
      }
  
      @Override
      public int getItemCount() {
          return dbList.size();
      }
  
      public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  
          public TextView name,email;
  
          public ViewHolder(View itemLayoutView) {
              super(itemLayoutView);
              name = (TextView) itemLayoutView
                      .findViewById(R.id.rvname);
              email = (TextView)itemLayoutView.findViewById(R.id.rvemail);
              itemLayoutView.setOnClickListener(this);
  
          }
  
          @Override
          public void onClick(View v) {
             dh.delete(dbList.get(getAdapterPosition()).getEmail);
  
  
              Toast.makeText(RecyclerAdapter.context, "you have clicked Row " + getAdapterPosition(), Toast.LENGTH_LONG).show();
          }
      }
  }
  </code></pre>
  
  <p>i have tried to update recyclerview using <code>mAdapter.notifyDataSetChanged ();</code> but it doesn't working for me.please sugget me.Thank you</p>