2017-06-19 65 views
1

我在購物車活動中安裝了RecyclerView。我想通過按結賬活動的完整訂單按鈕清除此RecyclerView。按下其他活動的按鈕清除回收站

在這裏,我試圖描述的情景: enter image description here

+0

我認爲您完成訂單後不需要返回購物車頁面。完成訂單頁面後,您需要將用戶導向主頁。因此,當您點擊完成訂單按鈕時​​,處理購物車頁面的數據源。 – nitinkumarp

回答

3

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

  1. 開始startActivityForResult結賬活動(),然後返回一個值,該值指示是否不清除RecyclerView。詳情請參閱Getting a Result from an Activity

  2. 將購物車內容存儲在磁盤上的文件或數據庫中。這些數據可以包含一個標誌,指示購買是否已完成。購物車活動僅加載購物車中尚未支付的物品的數據。

3

只要檢查啓動活動結果它是如何工作的 refrance - https://stackoverflow.com/a/10407371/4741746

onActivityResult方法,你可以通過使用notifyDataSetChanged(更新您的適配器),或刷新方法

@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方法放入適配器中

+0

我把這個代碼,但它並沒有清除結賬後進行recyclinglerview。 –

+0

嘗試使用這一個 ArrayList yourNewList = new ArrayList (); 適配器。刷新(yourNewList); 此代碼是否執行? –

+0

你有沒有得到回調的活動意味着......把調試器放在列表活動onActivityResult方法檢查是否 ArrayList yourNewList = new ArrayList (); adapter.Refresh(yourNewList); 正確執行 –

1

完成訂單按鈕點擊發送本地廣播到以前的recyclerView活動,在接收廣播時清除列表並更新recyclerView。然後您的recyclerView將被清除。

0

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

另一種選擇是:

1.創建一個單獨的數據類來保存所有的數據。

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

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

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

該方法將保持購物車清單數據獨立於不同的活動。因此,只需調用data類的靜態getInstance方法並調用allClear,無論您處於哪種活動狀態。