您也可以使用 StartActivityForResult,并使用第二个活动的结果来删除第一个活动中的项目。
我的意思是:
在 FirstActivity 中:
Intent i = new Intent(this, SecondActivity.class);
startActivityForResult(i, 1);
Intent returnIntent = new Intent();
returnIntent.putExtra("delete", true);
returnIntent.putExtra("position", position);
setResult(Activity.RESULT_OK, returnIntent);
finish();
最后,FirstActivity 处理结果:
@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://dev59.com/t2kv5IYBdhLWcg3wtS8N#10407371
编辑:
在适配器构造函数中获取您活动的上下文:
FirstActivity listener;
public myAdapter(Context context, List<String> items) {
super(context, R.layout.row_edition, items);
this.listener = ((FirstActivity) context);
this.items = items;
}
然后,在适配器内部,当您按下项目时,请调用活动以启动第二个活动:
listener.startSecondActivity(int position, parameters you need to use);
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);
}
流程如下:
protected void onResume()
{
super.onResume();
Log.i("TAG", "resume");
if(yourlist.size() > 0)
{
yourlist.clear();
yourlist.addAll(where your data come from
ex:databaseHelper.GetOrganization());
youradapter.notifyDataSetChanged();
}
}
你必须在你的活动中实现一个监听器,告诉你的回收视图项目已更改。我假设你已经为回收视图实现了自己的onItemClickListener,因此你有位置并且可以轻松地从回收视图数据集中删除项目。如需更多信息,请发布你的代码。
这个监听器放在你填充回收视图的类中。
public interface DeletedListener {
void deleted(int position);
}
public void setListener(DeletedListener listener) {
this.listener = listener;
}
DeletedListener listener;
notifyDataSetChanged
即可。列表将自动刷新。 - PztarRecyclerView
被销毁,当您重新创建它时,它将重新加载数据,您的旧条目将不再存在。如果它没有被销毁,那么请使用现有的RecyclerView
调用notifyDataSetChanged
。 - PztarnotifyDataSetChanged
可以帮助你实现这个功能。如果你能发一些代码,也许更容易诊断你的问题。 - Pztar