我的SlidingTabLayout
包含三个选项卡,它们使用相同的布局和完全相同的代码,除了几行...为了在每个选项卡中使用不同的SQLite数据库表,我将它们保存为单独的类。为了更清楚,public Fragment getItem()
中的public class ViewPagerAdapter extends FragmentStatePagerAdapter
方法看起来像这样:
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
Tab1 tab1 = new Tab1();
return tab1;
case 1:
Tab2 tab2 = new Tab2();
return tab2;
case 2:
Tab3 tab3 = new Tab3();
return tab3;
}
我不喜欢这种方法,我想知道如何使用一个类实现相同的结果(使类的每个实例使用不同的数据库表)。我认为可以通过向每个实例传递类似于唯一ID的内容来完成,因此它知道要使用哪个表,但我不清楚如何在这种情况下传递类似的内容。
答案 0 :(得分:1)
我认为使用捆绑包可能会对您有所帮助:
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
TabFragment tab1 = new TabFragment();
Bundle args = new Bundle();
args.putString("tableName", tableName1);
tab1.setArguments(args);
return tab1;
case 1:
TabFragment tab2 = new TabFragment();
Bundle args = new Bundle();
args.putString("tableName", tableName2);
tab2.setArguments(args);
return tab2;
case 2:
TabFragment tab3 = new TabFragment();
Bundle args = new Bundle();
args.putString("tableName", tableName3);
tab3.setArguments(args);
return tab3;
}