0

我知道使用了notifyItemInserted(position),但在大多數示例中,我已經看到它在Click Listener的幫助下被觸發。如何通知recyclerview適配器插入數據的新項目

但在我的情況下,我希望適配器知道更改並在按下其他活動中的按鈕時更新其視圖。

我該如何做到這一點?

考慮下面示例場景: 1)應用與活動開始甲

2)活動A包含recyclerview

3)如當前數據爲空沒有物品在recyclerview所示

4)不知何故,我進入活動B

4)我更新了數據並按下按鈕

5)作爲新的數據是存在的,recyclerview現在具有與更新的數據

+3

考慮SwipeRefreshLayout? – Akshay

+0

您可以在模型中存儲數據,同時處於活動B中,現在再次回到您的適配器中,您可以使用swiperefreshlayout並根據您的需要實現這些方法:notifyDataSetChanged()或notifyItemChanged(int)或notifyItemRangeChanged(int,int) 。請參閱此鏈接(http://stackoverflow.com/questions/33789345/whats-better-notifydatasetchanged-或-notifyitemchanged-in-loop) –

+0

不,這是行不通的。我希望RW中的新視圖在Activity B中按下按鈕時出現。像Person這樣的東西填充表單字段並提交,然後在活動A –

回答

0

如果它適合您,請創建List數據模型的全局實例您要更新RecyclerView

List<DataModel> dataModelList = new ArrayList<>(); 

可以延長Application類的類,你要做到這一點或其他地方。

現在ActivityA

public class ActivityA extends AppCompatActivity { 
    YourAdapter adapter; 
    RecyclerView recyclerView; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    recyclerView = (RecyclerView) findViewById(R.id.recyclerView); 

    adapter = new YourAdapter(YourClassWhereYouPutDataModelList.dataModelList) 
    recyclerView.setAdapter(adapter); 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     adapter.notifyDataSetChanged(); 
    } 
} 

現在,在您ActivityB

public class ActivityA extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     findViewById(R.id.button).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       //your code to get value 
       YourClassWhereYouPutDataModelList.dataModelList.add(YourValue); 
       //Now it's up to you, either finish it using finish() or continue working 
       //Whenever you go to ActivityA, RecyclerView will be updated 
      } 
     }); 
    } 
} 
+0

感謝waqas和大家 –

2
  1. 與startActivityForResult意圖打開活動乙
  2. 回來從活動B與數據
  3. 在活動A onActivityResult更新單個視圖中的數據並通知您的適配器
相關問題