[英]How to replace switch statement in ViewPager Adapter
我有一个需要两个字符串数组的类。 这些数组包含每个文件的文件名和标题。 我正在设置ViewPager,但是由于这些数组可以根据应用程序中的部分进行更改,因此我无法使用switch语句。 ViewPager显示片段,这些片段从我的资产文件夹中的文件收集数据。
方案A:
fileTitleString []的长度为4
@Override public Fragment getItem(int position) { Fragment fragment = new myFragment(FILE_PATH, fileString[SELECTION]); switch (position) { case 0: fragment = new myFragment(FILE_PATH, fileString[0]); break; case 1: fragment = new myFragment(FILE_PATH, fileString[1]); break; case 2: fragment = new myFragment(FILE_PATH, fileString[2]); break; case 3: fragment = new myFragment(FILE_PATH, fileString[3]); break; } return fragment; } @Override public CharSequence getPageTitle(int position) { String title = ""; switch (position) { case 0: title = " " + fileTitleString[0] + " "; break; case 1: title = " " + fileTitleString[1] + " "; break; case 2: title = " " + fileTitleString[2] + " "; break; case 3: title = " " + fileTitleString[3] + " "; break; } return title;
}
方案B: -fileString []的长度为5-fileTitleString []的长度为5
我知道switch子句所做的只是设置一个新片段,但ViewPager需要知道前后的内容,以便您可以在片段之间滑动。
如我所见,您只能在getItem方法中执行此操作。 这取代了开关
@Override
public Fragment getItem(int position) {
Fragment fragment = new myFragment(FILE_PATH, fileString[0]);
if(position>=0&&position<fileString.length){
fragment= new myFragment(FILE_PATH, fileString[position]);
}
return fragment;
}
和在getPageTitle中一样
@Override
public CharSequence getPageTitle(int position) {
String title = "";
if(position>=0&&position<fileTitleString.length){
title = " " + fileTitleString[postition] + " ";
}
return title;
}
如果您只想用更紧凑的代码替换switch
语句,则应该可以使用:
@Override
public Fragment getItem(int position) {
return new myFragment(FILE_PATH,
fileString[position >= 0 && position <= 3 ? position : SELECTION]
);
}
@Override
public CharSequence getPageTitle(int position) {
return position >= 0 && position <= 3
? String.format(" %1$s ", fileTitleString[position])
: "";
}
您可能要分别使用fileString.length
和fileTitleString.length
代替getItem
和getPageTitle
(resp。)中的常数3
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.