[英]RecyclerView in Android goes blank when pressing sort button from another activity
[英]clear recyclerview on pressing button of another activity
我可以想到兩種可能的解決方案:
使用startActivityForResult()啟動檢出活動,然后返回一個值,該值指示是否清除RecyclerView。 有關詳細信息,請參見從活動獲取結果 。
將購物車內容存儲在文件或數據庫的磁盤上。 該數據可以包括指示購買是否已經完成的標志。 然后,購物車活動僅加載購物車中但尚未付款的商品的數據。
只要檢查結果它是如何工作的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.