2014-10-08 71 views
1

我有很多图片的数字结尾像page_001,page_002 ... page_148。现在我不确定如何在使用Universal image Loader的ViewPager中实现它们。前导零的字符串剪切

这是我的instantiateItem方法,现在我有一个修复图像用于测试目的。我如何格式化FileName结尾,以便我可以使用Position来指示应该加载哪个图像?或者其他方式?

001 - > 1 002 - > 2 .. 148 - > 148

public Object instantiateItem(ViewGroup container, int position) { 

    ImageView imageView = new ImageView(mContext); 
    imageLoader.displayImage(String.format("%s%s/%s_Page_001.jpg", mProtocolPathName, mFilDir, mFilDir), imageView, options); 
    container.addView(imageView); 
    return imageView; 
} 

回答

1

3I使用mFileNumber作为文件编号,但是这应该给你一个想法如何去做。

public Object instantiateItem(ViewGroup container, int position) { 

    ImageView imageView = new ImageView(mContext); 
    imageLoader.displayImage(String.format("%s%s/%s_Page_%03d.jpg", mProtocolPathName, mFilDir, mFilDir, mFileNumber), imageView, options); 
    container.addView(imageView); 
    return imageView; 
} 
+0

工作感谢!现在看起来像这样 imageLoader.displayImage(String.format(“%s%s /%s_Page_%03d.jpg”,mProtocolPathName,mFilDir,mFilDir,position + 1),imageView,options); 你能解释一下%3d发生了什么吗? – 2014-10-08 12:37:00

+0

这意味着您希望字符串的总长度为3个字符,并且您希望它填充0。第一个字符“0”是填充字符,第二个“3”是总长度。 – Brian 2014-10-08 12:44:31

+0

如果文件的结尾是page_10000,会发生什么情况?这会削减什么? – 2014-10-08 13:02:08

1

喜欢这个?

public Object instantiateItem(ViewGroup container, int position) { 

    ImageView imageView = new ImageView(mContext); 
    imageLoader.displayImage(String.format("%s%s/%s_Page_%03d.jpg", mProtocolPathName, mFilDir, mFilDir, position), imageView, options); 
    container.addView(imageView); 
    return imageView; 
} 
0

使用String.replaceFirst("^0+(?!$)", "")来切断前导零。 或在你的情况下,从字符串中提取数字Integer.valueOf(String.split("page_")[1].replaceFirst("^0+(?!$)", ""));

+0

这不会取代所有*零,包括那些所需的零吗?我的意思是这不会像“453.jpg”那样改变“4053.jpg”吗? – 2014-10-08 12:30:30

+0

你说得对,现在已经修好了。谢谢 – slezadav 2014-10-08 12:42:02

+0

这个工作适用于所有的数字吗?也喜欢4和更多? – 2014-10-08 12:48:55