答案 0 :(得分:3)
我可以想到两种可能的解决方案:
使用startActivityForResult()启动结帐活动,然后返回一个值,该值指示是否清除RecyclerView。有关详细信息,请参阅Getting a Result from an Activity。
将购物车内容存储在文件或数据库中的磁盘上。数据可以包括指示购买是否已完成的标志。然后,购物车活动仅加载购物车中但尚未付款的商品的数据。
答案 1 :(得分:3)
只需检查开始活动的结果如何运作 refrance - https://stackoverflow.com/a/10407371/4741746
在 onActivityResult 方法中,您可以使用notifyDataSetChanged()或refresh方法更新适配器
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1) {
if(resultCode == Activity.RESULT_OK){
String result=data.getStringExtra("result");
ArrayList<String> yourNewList= new ArrayList<String> ();
adapter.Refresh(yourNewList);
}
if (resultCode == Activity.RESULT_CANCELED) {
//Write your code if there's no result
}
}
}
public void Refresh(ArrayList<String> datas) { //your bean
this.mStrings.clear(); //mStrings is your bean ArrayList
this.mStrings.addAll(datas);
notifyDataSetChanged();
}
如果您想要完全刷新适配器
,请将此Refresh方法放在适配器中答案 2 :(得分:1)
在完成订单按钮上单击将本地广播发送到之前的recyclelerView活动,其中接收广播时清除列表并更新recyclerView。然后您的recyclerView将被清除。
答案 3 :(得分:0)
如上所述,最好使用startActivityForResult这可以防止您的购物车活动在您开始结帐活动时被销毁,购物车活动可以处理最终结果。
另一种选择是:
1.创建单例数据类以保存所有数据。
2.declare getter,setter,allClear和getInstance(静态)方法。
3.在购物车活动中获取数据类的实例并填充列表。
4.获取数据类的实例并调用allClear以删除Checkout活动中的数据。
这种方法可以使购物车清单数据独立于不同的活动。所以你需要的是调用数据类的静态getInstance方法,无论你在哪个活动中调用allClear。