1

所以我有一個活動包含一個ViewPager,其中包含一些碎片,其中包括一個RecyclerView。您可以單擊RecyclerView上的其中一個項目來編輯其所有詳細信息,這是通過啓動具有特定於該項目的可編輯字段的第二個活動來完成的。如何在活動關閉時觸發重新加載?

但是讓我們說我改變了項目的名稱。現在我按保存或後退按鈕或任何關閉此活動並返回到第一個活動。由於名稱現在可能會有所不同,因此RecyclerView應該也會更新該項目的名稱。

但是,如何檢測此事件?我如何基本上「在關閉第二個Activity時通知第一個Activity的ViewPager中的ReraglerView中的項目已更改?

我可以使用onActivityResult嗎?如果我使用startActivityForResult從片段調用第二個活動,我可以在同一個片段中定義onActivityResult,然後以某種方式使用Intent數據查看「好吧,我需要刷新RecyclerView的這個位置」?

+0

是的,你可以使用onActivityResult此 – Sanjeet

回答

2

我可以使用onActivityResult的保存按鈕?

是的。您可以如何使用它:

  1. 當在RecyclerView中單擊某個項目時,您將跟蹤所點擊的項目的適配器位置。
  2. 您可以從片段內開始第二個活動。

    // adapterPosition is the position of the clicked item 
    Intent intent = new Intent(getActivity(), SecondActivity.class); 
    intent.putExtras("adapter_position", adapterPosition); 
    startActivityForResult(intent, 1); 
    
  3. 在你SecondActivity設置adapterPosition作爲結果Intent的一部分。在你的片段中處理SecondActivity結果。

SecondActivity

// adapterPosition is what you received from your fragment 
    Intent result = new Intent(); 
    result.putExtra("adapter_position", adapterPosition); 
    // put other stuff you might need 
    setResult(Activity.RESULT_OK, result); 
    finish(); 

在片段

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == 1) { 
     if(resultCode == Activity.RESULT_OK){ 
      int adapterPosition = data.getIntExtra("adapter_position"); 
      // Update your RecyclerAdapter data. 
      // You will need to define this method in your RecyclerAdapter 

      yourAdapter.notifyItemChanged(adapterPosition); 
     } 
     else { 
      // Some error/cancel handling 
     } 
    } 
} 
0

從片段中調用startActivityForResult來更新您的項目併發送它的當前位置。

intent.putExtra(POSITION_OF_RECYCLERVIEW,position); 

DetailActivity電話一樣的setResult()的方法

private void setResult(){ 

     Intent intent = new Intent(); 
     intent.putExtra("UPDATE_POS", position); 
     intent.putExtra("yourModelClassOrDataType",dataToUpdate); 
     setResult(RESULT_OK, intent); 
     finish(); 
} 
相關問題