我创建了一个包含大约4-5个标签的viewpager。所有选项卡都将包含具有不同元素的列表视图。显然,所有片段都可以简单地膨胀单个布局文件,并将自己的东西添加到listview适配器。
实际上,我会有一堆列表视图并排。
我的问题是,如果我可以使用单个布局文件,我还可以使用单个片段吗?
据我所知,viewpager每个标签需要不同的片段。但鉴于我只是在每个选项卡中更改非常轻的列表视图(列表项= 1 textview),我可以通过使用viewpager的位置(打开选项卡)以某种方式回收相同的片段
无论如何,这是我的TitleAdapter:
public class TitleAdapter extends FragmentPagerAdapter{
private String titles[] = new String[]{"View1","View2","View3"};
private Fragment frags[] = new Fragment[titles.length];
public TitleAdapter(FragmentManager fm) {
super(fm);
frags[0] = new FragmentView1();
frags[1] = new FragmentView2();
frags[2] = new FragmentView3();
}
@Override
public CharSequence getPageTitle (int position){
Log.v("TitleAdapter - getPageTitle=", titles[position]);
return titles[position];
}
@Override
public Fragment getItem(int position) {
Log.v("TitleAdapter - getItem=", String.valueOf(position));
return frags[position];
}
@Override
public int getCount() {
return frags.length;
}
}
正如你所看到的,现在我有3个片段。但是,如果提供更好的性能甚至几千字节的应用程序大小,我也不想走错方向。 FragmentView是每个标签的片段,我在其中为同一个列表视图充气并在其中放入不同的数据。
那么,可以通过重复使用相同的单个片段来使用viewpager吗?或者我必须使用多个片段吗?
我想要最好的表现,就是这样。
答案 0 :(得分:0)
使用多个片段tats的方式。而且片段不会像活动一样大小。所以继续前进。
答案 1 :(得分:0)
试试这个。
public class TitleAdapter extends FragmentPagerAdapter{
private String titles[] = new String[]{"View1","View2","View3"};
private Fragment frags;
public TitleAdapter(FragmentManager fm) {
super(fm);
frags = new FragmentView1();
}
@Override
public CharSequence getPageTitle (int position){
Log.v("TitleAdapter - getPageTitle=", titles[position]);
return titles[position];
}
@Override
public Fragment getItem(int position) {
Log.v("TitleAdapter - getItem=", String.valueOf(position));
frags.onPositionChange(position);
return frags;
}
@Override
public int getCount() {
return titles.length;
}
}
我不确定是否通过异常返回相同的片段。所以,让我知道会发生什么。