2015-07-03 17 views
1

我無法解決此問題。更新標籤frgament onResume的綁定數據

我有一個活動:PdvActivity與viewPager。 此活動獲取數據列表並將此數據設置爲TabsPagerAdapter。 TabsPagerAdapter創建3個選項卡片段並在其包中傳遞數據。 第一個選項卡包含一個gridView,其中包含從該包中收到的列表中的項目。 我點擊一個項目和一個活動開始...當活動完成時我需要刷新這個網格。

我所做的:

PdvActivity的onResume:我讀了新的數據,我在適配器設置的數據,我再次將適配器設置爲尋呼機

Panel[] panels = DB.getPdvPanels(pdv.id, true, activity_list); 
Company company = DB.getCompany(panels[0].attivita.company_id); 
mAdapter = new TabsPagerAdapter(getSupportFragmentManager()); 
mAdapter.setPdv(pdv); 
mAdapter.setActivities(panels); 
mAdapter.setCompany(company); 
viewPager.setAdapter(mAdapter); 

在第一個選項卡的onResume:

@Override 
public void onResume() { 
    super.onResume(); 
    Panel[] array_panel = (Panel[])getArguments().getParcelableArray("attivita"); 
    gridview = (GridView)rootView.findViewById(R.id.gridView); 
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), array_panel)); 
    gridview.invalidateViews(); 
} 

PdvActivity獲取新鮮數據,但網格使用包中的舊數據刷新本身。沒有什麼改變。

我失蹤了?

謝謝你的建議

回答

0

我找不到更新軟件包的方法。 所以我改變我的代碼,我認爲是一種解決方法。

我不是在主要活動中刷新數據,而是將該部分移動到片段中。 現在在包中,我只傳遞了查詢所需的參數,並且實例化了片段中的數據庫以執行查詢。

@Override 
public void onResume() { 
    super.onResume(); 
    Panel[] array_panel = (Panel[])getArguments().getParcelableArray("attivita"); 
    gridview = (GridView)rootView.findViewById(R.id.gridView); 
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), array_panel)); 
    gridview.invalidateViews(); 
} 

到:

@Override 
public void onResume() { 
    super.onResume(); 
    ArrayList<Attivita> activity_list = (ArrayList<Attivita>)getArguments().get("attivita"); 
    panels = DB.getPdvPanels(pdv.id, true, activity_list); 
    gridview = (GridView)rootView.findViewById(R.id.gridView); 
    gridview.setAdapter(new AttivitaPdvAdapter(getActivity(), panels)); 
    gridview.invalidateViews(); 
} 

我不知道是否是一個很好的解決方案,或者如果有一個更好的辦法。 但它的作品,它似乎對我來說確定。

希望它能幫助你。