Я работаю над приложением для Android, которое использует viewpager для создания слайдера из изображений, загруженных с URL. Работает нормально.
Но теперь мне нужно улучшить его, добавив не только изображения, но и видео с URL.
Это мой код для текущего окна просмотра:
Во фрагменте:
final String url_postmedia = "https://...postsmedia/";
String mediapostfile []= mediafile.split(",");
String mediaposttype []= mediatype.split(",");
urls = new String[mediapostfile.length];
for (int i = 0; i < mediapostfile.length; i++) {
if (mediaposttype[i].equals("1")){
urls[i] = url_postmedia+mediapostfile[i];
}
}
holder.mPager.setAdapter(new SlidingImage_Adapter(context,urls));
holder.indicator.setViewPager(holder.mPager);
//Set circle indicator radius
NUM_PAGES = urls.length;
// Auto start of viewpager
final Handler handler = new Handler();
final Runnable Update = new Runnable() {
public void run() {
if (currentPage == NUM_PAGES) {
currentPage = 0;
}
holder.mPager.setCurrentItem(currentPage++, true);
}
};
Timer swipeTimer = new Timer();
swipeTimer.schedule(new TimerTask() {
@Override
public void run() {
handler.post(Update);
}
}, 3000, 3000);
// Pager listener over indicator
holder.indicator.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
currentPage = position;
}
@Override
public void onPageScrolled(int pos, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int pos) {
}
});
и адаптер:
public class SlidingImage_Adapter extends PagerAdapter {
private String[] urls;
private LayoutInflater inflater;
private Context context;
public SlidingImage_Adapter(Context context, String[] urls) {
this.context = context;
this.urls = urls;
inflater = LayoutInflater.from(context);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
@Override
public int getCount() {
return urls.length;
}
@Override
public Object instantiateItem(ViewGroup view, int position) {
View imageLayout = inflater.inflate(R.layout.slidingimages_layout, view, false);
assert imageLayout != null;
final ImageView imageView = (ImageView) imageLayout
.findViewById(R.id.image);
imageLayout.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
//this will log the page number that was click
}
});
Glide.with(context)
.load(urls[position])
.into(imageView);
view.addView(imageLayout, 0);
return imageLayout;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public Parcelable saveState() {
return null;
}
}
С сервера я получаю два строковых массива: mediapostfile[]
, который содержит имена файлов, и mediaposttype[]
, который содержит типы файлов, «1» для изображений и «2» для видео.
Что я должен учитывать, чтобы использовать свой текущий код для добавления видео на слайдер?