viewPager = (ViewPager) findViewById(R.id.tabanim_viewpager);
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabanim_tabs);
setupViewPager(viewPager);
tabLayout.setupWithViewPager(viewPager);
public void setupViewPager(ViewPager upViewPager) {
ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
adapter.addFrag(new ViewTodayFragment(),"Daily");
adapter.addFrag(new ViewWeekFragment(),"Weekly");
adapter.addFrag(new ViewMonthFragment(),"Monthly");
adapter.addFrag(new ViewYearFragment(),"Yearly");
viewPager.setAdapter(adapter);
}
我希望每次更换标签时都刷新片段。
内部片段这是我的代码
public class ViewTodayFragment extends Fragment {
// TODO: Rename parameter arguments, choose names that match
// the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
private static final String ARG_PARAM1 = "param1";
private static final String ARG_PARAM2 = "param2";
RecyclerView recyclerView;
RecyclerView.LayoutManager mLayoutManager;
RecyclerView.Adapter mAdapter;
// TODO: Rename and change types of parameters
View v;
ListView listview;
private ArrayList<DailyModel> mItems;
public static String datesel="a";
public ViewTodayFragment() {
// Required empty public constructor
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
v=inflater.inflate(R.layout.fragment_view_today, container, false);
recyclerView =(RecyclerView)v.findViewById(R.id.view_today_lv_today);
recyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
recyclerView.setLayoutManager(mLayoutManager);
loadData();
return v;
}
@Override
public void onResume() {
super.onResume();
loadData();
}
public void loadData(){
mItems=new ArrayList<DailyModel>();
List<Income> ll = null;
Log.d("ALLL",datesel);
if(datesel.equals("a")){
Calendar cw = Calendar.getInstance();
SimpleDateFormat format1 = new SimpleDateFormat("dd-MM-yyyy");
String currentDay=format1.format(cw.getTime());
ll=new IncomeHandler(getActivity()).getIncomeByThisDay(currentDay);
}else{
ll=new IncomeHandler(getActivity()).getIncomeByThisDay(datesel);
}
for (int i = 0; i < ll.size(); i++) {
DailyModel a=new DailyModel();
a.setCategory(ll.get(i).getWay());
a.setDescription(ll.get(i).getDes());
a.setType(ll.get(i).getType());
a.setBank("Bank");
a.setAmount(ll.get(i).getAmount());
mItems.add(a);
}
mAdapter = new DailyAdapter(mItems);
recyclerView.setAdapter(mAdapter);
}
}
所以这样有4个标签,所以我想每次更改标签时都要刷新。我尝试在OnResume()内部进行操作。但它也无效。
答案 0 :(得分:1)
像这样创建你的寻呼机适配器。
class PagerAdapter extends FragmentPagerAdapter {
private final List<String> fragmentTitleList = new ArrayList<>();
public PagerAdapter(FragmentManager fragmentManager) {
super(fragmentManager);
}
public void addFragmentTitle(String title) {
fragmentTitleList.add(title);
}
@Override
public Fragment getItem(int position) {
if (position == 0) {
return new ViewTodayFragment();
} else if (position == 1) {
return new ViewWeekFragment();
} else if(position == 2){
return new ViewMonthFragment();
} else{
return new ViewYearFragment();
}
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
return fragmentTitleList.get(position);
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
}
现在你需要像这样添加片段
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager());
adapter .addFragmentTitle("Daily");
//..... add rest of the fragment title.
viewPager.setAdapter(pagerAdapter );
希望这会对你有所帮助。虽然我没试过这个。如果你有任何错误,请写信告诉我。
答案 1 :(得分:1)
你的答案....你必须使用
$(function(){
var bgimage = new Image();
bgimage.src="https://www.switchbacktravel.com/sites/default/files/images/articles/Hiking%20photo.jpg";
$("#child-background").hide();
$(bgimage).load(function(){
$("#child-background").css("background-image","url("+$(this).attr("src")+")").fadeIn(2000);
});
});
当您选择的标签发生变化时。
答案 2 :(得分:0)
实施ViewPager.OnPageChangeListener http://developer.android.com/reference/android/support/v4/view/ViewPager.OnPageChangeListener.html
答案 3 :(得分:0)
我解决了类似的问题。我的四个标签(运动员的运动计时器 - 滑雪者或骑自行车 - 每隔一段时间开始)也需要相互沟通。例如,一旦开始比赛,必须禁用设置控件。
我的项目基于Google的SlidingTabsColors示例。
我创建了一个简单的方法接口,名为Refreshable
,我的每个标签(Fragments)都实现了refresh
方法。
在我的SlidingTabsFragment(扩展片段)中,我重写了instantiateItem
,因此我可以捕获对每个标签片段的引用。
// Here we can safely save a reference to the created
// Fragment, no matter where it came from (either getItem() or
// FragmentManger).
//
@Override
public Object instantiateItem(ViewGroup container, int position) {
Fragment createdFragment = (Fragment) super.instantiateItem(container, position);
/**
* Save Fragment references in an array with the MainActivity
* so that other tabs can be refreshed (state updated) depending on
* changes to other tabs.
*/
MainActivity a = (MainActivity)getActivity();
a.addFragment((Refreshable)createdFragment);
return createdFragment;
}
我的主要是我的数据模型的观察者,但你的可能不同。
这是“注册”片段的主要方法。
/**
* Accepts the specified fragment and adds to the list of "Refreshable" Fragments.
* If it is already registered, it is not added a second time.
*
* @param fragment
* the Fragment (Observer) to add.
*/
public void addFragment(Refreshable fragment) {
if (fragment == null) {
throw new NullPointerException("fragment == null");
}
synchronized (this) {
if (!mRefreshables.contains(fragment))
mRefreshables.add(fragment);
}
}
就我而言,此代码位于我观察者的update
方法中。我的数据发生了变化(比赛开始,间隔倒计时到期,记录了终结者),我可以刷新所有标签。由于种族(没有双关语)的条件,我不能从一个标签打到另一个标签。
/**
* Call refresh on every Fragment to update state.
*/
for (Refreshable refreshable : array) {
refreshable.refresh();
}
每个标签的刷新方法都有自己的功能。
您可能不需要Observer协调所有选项卡,但至少您将有一个对它们的引用和onResume以外的方法(对我来说也不起作用)来调用并让内容自行刷新
答案 4 :(得分:0)
我目前解决了这个类型问题。请逐行恢复我的代码。可能会帮助你。
感谢。
<th ng-repeat="(key,value) in products[0]">{{key}}</th>
答案 5 :(得分:-2)
您可以在活动的每个更改中使用以下代码来刷新片段。
getActivity.finish();
getActivity.startActivity(getActivity.getIntent());