You can also use StartActivityForResult and use the result of the second activity for delete item in first one.
I mean:
- FirstActivity starts SecondActivity waiting for result
- SecondActivity sends the result back to FirstActivity. Only if you delete
the item.
- Now FirstActivity remove and refresh the list.
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") {
int position = data.getIntegerExtra("position");
}
}
if (resultCode == Activity.RESULT_CANCELED) {
}
}
}
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) {
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
}
The flow is:
- Push item
- Use FirstActivityListener to call SecondActivity
- In SecondActivity delete and senr result back
- In FirstActivity remove item from adapter, using an auxiliar method
inside que adapter
notifyDataSetChanged
on your adapter after you've deleted the entry from your database. The list will refresh itself. – PztarRecyclerView
gets destroyed it'll reload the data when you create it and your old entry will no longer be there. If it doesn't get destroyed then use the existingRecyclerView
to callnotifyDataSetChanged
– PztarnotifyDataSetChanged
will help you do that. Perhaps if you post some code it'll be easier to diagnose your issue. – Pztar