2016-12-26 85 views
0

ViewPager我的4個片段有來自父活動一個共同的按鈕打開一個對話框,應刷新列表視圖中這些4個片段。我嘗試使用靜態適配器,但沒有奏效。現在我試圖使用廣播,但仍然不會看到我的適配器從外部廣播接收器。請幫忙。刷新片段

+0

分享一些代碼 –

+0

分享您的PagerAdapter類代碼 – MobDev

回答

2

我同樣的要求,我沒有以下內容: - 1.擴展pagerAdapter與FragmentStatePagerAdapter 2.在您的pagerAdapter類實現以下

@Override 
    public int getItemPosition(Object object) { 
     return POSITION_NONE; 
    } 
  • 然後當過刷新只需調用 -
  • notifyDataSetChanged();

    on adapter。

    你可以從你viewpager如下得到你的適配器:

    viewPager.getAdapter()notifyDataSetChanged()。

    這裏viewpager是我的viewpager的引用。

    +0

    我試過這種方式,但應用程序正在收到滯後並關閉刷新。 :/ – Tomek

    +0

    我只能幫你分享你的代碼。 – MobDev

    +0

    啊,我寫了getItemPosition不正確,它很好用,謝謝:D! – Tomek

    0

    將你的4個列表添加到帶有單獨鍵(1,2,3,4)的地圖。

    if (viewPager.getCurrentItem() == 0){ 
    // show list items with key 1 
    }else if(viewPager.getCurrentItem() == 1){ 
    //show list items with key 2 
    }else if(....) 
    

    現在放置一個監聽器,並在按鈕單擊時調用它。

    +0

    我認爲這將無法正常工作,因爲在右側的viewpager中的一個片段可以實際初始化,我想刷新甚至沒有顯示的片段。我在下面發佈了一個答案。 – Tomek

    0

    像往常一樣,我一直在嘗試做一些事情了幾天,當我張貼在這裏,我發現了一個事情我做錯了:d

    那麼,如何做到這一點:

    在每一個孩子的片段我創建了一個廣播接收器

    receiver = new BroadcastReceiver() { 
         @Override 
         public void onReceive(Context contextBroadcast, Intent intent) { 
          createListView(listView, context); 
         } 
        }; 
    
        IntentFilter filter = new IntentFilter(); 
        filter.addAction("com.cukrzyca.DISMISS"); 
        context.registerReceiver(receiver, filter); 
    

    而事實證明,你要準備的IntentFilter好,這是我做了什麼錯。方法createListView只是刷新列表視圖和對話框中父活動駁斥我剛剛發送廣播消息:

    public void broadcastDismiss() { 
        Intent intent = new Intent(); 
        intent.setAction("com.cukrzyca.DISMISS"); 
        getContext().sendBroadcast(intent); 
    }