按下另一项活动的按钮清除回收者视图

时间:2017-06-19 05:07:41

标签: java android android-recyclerview

我在购物车活动中有RecyclerView。我想在按结帐活动的完整订单按钮时​​清除此RecyclerView。

这里我试着描述一下这个场景: enter image description here

4 个答案:

答案 0 :(得分:3)

我可以想到两种可能的解决方案:

  1. 使用startActivityForResult()启动结帐活动,然后返回一个值,该值指示是否清除RecyclerView。有关详细信息,请参阅Getting a Result from an Activity

  2. 将购物车内容存储在文件或数据库中的磁盘上。数据可以包括指示购买是否已完成的标志。然后,购物车活动仅加载购物车中但尚未付款的商品的数据。

答案 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。