I am using Recyclerview adapter to populate Recyclerview. After populating Recyclerview from SQLite, If user want to open an recyclerview item need to click on that item and adapter open the related activity. Here is an image which can help you understand easily.
When an activity is open user can delete that post from SQLite by clicking delete button after deleting data recyclerview should dynamically update data.
You can also use StartActivityForResult and use the result of the second activity for delete item in first one.
I mean:
In FirstActivity:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
In SecondActivity, when you push delete button:
Intent returnIntent = new Intent();
returnIntent.putExtra("delete", true);
returnIntent.putExtra("position", position);
setResult(Activity.RESULT_OK, returnIntent);
finish();
And finally, FirstActivity handle the result:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
if (data.getBooleanExtra("delete") {
// get position and delete item from list and refresh
int position = data.getIntegerExtra("position");
}
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}//onActivityResult
https://stackoverflow.com/a/10407371/1820599
Edited:
Getting the context of your activity inside the adapter constructor:
FirstActivity listener;
public myAdapter(Context context, List<String> items) {
super(context, R.layout.row_edition, items);
this.listener = ((FirstActivity) context);
this.items = items;
}
Then, inside the adapter, when you push on item, call the activity to start the seconde one:
listener.startSecondActivity(int position, parameters you need to use);
and finally, in your FirstActivity
startSecondActivity(int position, parameters you need to use) {
// whatever you have to do
Intent i = new Intent(this, SecondActivity.class);
// push position inside intent and whatever you need
startActivityForResult(i, 1);
}
The flow is: