簡體   English   中英

在另一個活動的按鈕上清除recyclerview

[英]clear recyclerview on pressing button of another activity

我在購物車活動中有RecyclerView。 我想在按結帳活動的完成訂單按鈕時​​清除此RecyclerView。

在這里,我試圖描述這種情況: 在此處輸入圖片說明

我可以想到兩種可能的解決方案:

  1. 使用startActivityForResult()啟動檢出活動,然后返回一個值,該值指示是否清除RecyclerView。 有關詳細信息,請參見從活動獲取結果

  2. 將購物車內容存儲在文件或數據庫的磁盤上。 該數據可以包括指示購買是否已經完成的標志。 然后,購物車活動僅加載購物車中但尚未付款的商品的數據。

只要檢查結果它是如何工作的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方法

單擊完成訂單按鈕后,將本地廣播發送到上一個recyclerView活動,在接收到廣播后,清除列表並更新recyclerView。 然后,您的recyclerView將被清除。

如上所述,最好與startActivityForResult一起使用。這將防止您在開始結帳活動時購物車活動被破壞,並且購物車活動可以處理最終結果。

另一種選擇是:

1.創建一個單例數據類以保存所有數據。

2.聲明getter,setter,allClear和getInstance(static)方法。

3.在購物車活動中獲取數據類的實例並填充列表。

4.獲取數據類的實例,然后調用allClear在Checkout活動中刪除數據。

這種方法可以使購物車列表數據獨立於不同的活動。 因此,無論您處於哪個活動中,您都需要調用數據類的靜態getInstance方法並調用allClear。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM