2014-10-08 3 views
1

У меня есть много изображений, которые имеют числовое окончание, как page_001, page_002 ... page_148. Теперь я не уверен, как реализовать их в моем ViewPager, который использует Universal Image Loader.String cut of leading zeros

Вот мой метод instantiateItem, прямо сейчас у меня есть исправление для целей тестирования. Как я могу форматировать окончание FileName, чтобы я мог использовать позицию для указания того, какое изображение должно быть загружено? или любым другим способом?

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, позиция + 1), imageView, опции); Не могли бы вы объяснить, что происходит с% 3d? –

+0

это означает, что вы хотите, чтобы общая длина строки была 3 символа, и вы хотите, чтобы она дополнялась 0. Первый символ «0» - это символ заполнения, а второй «3» - общая длина. – Brian

+0

Что произойдет, если окончание файла - page_10000? Разве это ничего не вырезает? –

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+(?!$)", ""), чтобы отрезать основные нули. или в вашем случае exctract номер из строки Integer.valueOf(String.split("page_")[1].replaceFirst("^0+(?!$)", ""));

+0

Не заменит ли это все * нули, включая те, которые желательны? Я имею в виду, не изменит ли это что-то вроде «4053.jpg» с «453.jpg»? –

+0

Вы были правы, теперь это исправлено. Спасибо – slezadav

+0

будет ли это работать для всех номеров? как и для 4 и более? –

Смежные вопросы