在Android中,可以通过使用ViewPager
和FragmentPagerAdapter
来实现选项卡功能,并在每次切换选项卡时加载数据。
首先,需要创建一个ViewPager
和TabLayout
来展示选项卡。
接下来,创建一个FragmentPagerAdapter
的子类来管理选项卡和片段的切换。
public class MyPagerAdapter extends FragmentPagerAdapter {
private List fragments;
private List titles;
public MyPagerAdapter(FragmentManager fm, List fragments, List titles) {
super(fm);
this.fragments = fragments;
this.titles = titles;
}
@NonNull
@Override
public Fragment getItem(int position) {
return fragments.get(position);
}
@Override
public int getCount() {
return fragments.size();
}
@Nullable
@Override
public CharSequence getPageTitle(int position) {
return titles.get(position);
}
}
然后,在Activity
中设置ViewPager
和TabLayout
,并为每个选项卡创建一个片段。
ViewPager viewPager = findViewById(R.id.viewPager);
TabLayout tabLayout = findViewById(R.id.tabLayout);
List fragments = new ArrayList<>();
fragments.add(new Fragment1());
fragments.add(new Fragment2());
List titles = new ArrayList<>();
titles.add("Tab 1");
titles.add("Tab 2");
MyPagerAdapter pagerAdapter = new MyPagerAdapter(getSupportFragmentManager(), fragments, titles);
viewPager.setAdapter(pagerAdapter);
tabLayout.setupWithViewPager(viewPager);
接下来,需要在每个片段中加载数据。可以使用onResume()
方法来判断片段是否已经加载过数据,如果没有,则加载数据。
public class Fragment1 extends Fragment {
private boolean isFirstLoad = true;
@Override
public void onResume() {
super.onResume();
if (isFirstLoad) {
// 加载数据的逻辑
loadData();
isFirstLoad = false;
}
}
private void loadData() {
// 加载数据的代码
}
// 其他片段相关代码...
}
通过在每个片段的onResume()
方法中判断是否已经加载过数据,可以实现只在第二次点击选项卡时加载数据的效果。