ViewPager 中的4个片段有一个来自父活动的公共按钮,可以打开一个对话框,并刷新这4个片段中的 ListViews 。我尝试使用静态适配器但是没有用。现在我正在尝试使用广播,但我仍然不会从外部广播接收器看到我的适配器。请帮忙。
答案 0 :(得分:2)
我有同样的要求我做了以下: - 1.使用FragmentStatePagerAdapter扩展pagerAdapter 2.在pagerAdapter类
中实现以下内容 Carbon::setLocale('es');
$archive_current_year = Articles::whereBetween('created_at', [
Carbon::now()->startOfYear(),
Carbon::now()->endOfYear(),
])->get()->groupBy(function($item) {
return $item->created_at->format('F');
});
适配器上的notifyDataSetChanged();
。
您可以从viewpager获取适配器,如下所示:
viewPager.getAdapter()notifyDataSetChanged();
这里viewpager是我的viewpager的引用。
答案 1 :(得分:0)
使用单独的键(1,2,3,4)将您的4个列表添加到地图中。
if (viewPager.getCurrentItem() == 0){
// show list items with key 1
}else if(viewPager.getCurrentItem() == 1){
//show list items with key 2
}else if(....)
现在放一个监听器并按下按钮调用它。
答案 2 :(得分: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只刷新listView,对话框在父活动中解除我只发送广播:
public void broadcastDismiss() {
Intent intent = new Intent();
intent.setAction("com.cukrzyca.DISMISS");
getContext().sendBroadcast(intent);
}