2016-12-26 241 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); 
    }