假设您的片段将位于 ViewPager 中的固定位置。
你应该用两种不同的布局制作两个片段
让我们称它们为:ImageFragment 和 VideoFragment。
你还应该扩展FragmentPagerAdapter
并像这样实现getItem(int position):
@Override
public Fragment getItem(int position) {
if (position == 2)
return VideoFragment.newInstance();
return ImageFragment.newInstance();
}
编辑:
所以这次我们假设你在 ViewPager 的末尾有很多图像和一个视频。
因此您可以将图像的路径放在ArrayList<String> 中(可能是本地路径或来自服务器的远程路径),并将视频路径也放在字符串变量中......并将这些字符串中的每一个传递给适当的片段,如下所示:
public class MultiMediaAdapter extends FragmentPagerAdapter {
private List<String> paths;
private String videoPath;
public MultiMediaAdapter (FragmentManager fm, List<String> paths, String videoPath) {
super(fm);
this.paths = paths;
this.videoPath = videoPath;
}
@Override
public Fragment getItem(int position) {
//pay attintion that position starts counting from zero
if (position == paths.size()) //video at the end of the ViewPager
return VideoFragment.newInstance(videoPath);
return ImageFragment.newInstance(paths.get(position));
}
@Override
public int getCount() {
return this.paths.size()+1; //+1 for the video
}
}
你应该像这样在片段中加载每个图像:
public class ImageFragment extends Fragment {
private String path;
public static ImageFragment newInstance(String path){
ImageFragment fragment = new ImageFragment();
fragment.setPath(path);
return fragment;
}
private void setPath(String path) {
this.path = path;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_image, container, false);
ImageView imageView = rootView.findViewById(R.id.imageView);
if (path != null){
// and here load image into imageView using path, the way you want
}
return rootView;
}
}
VideoFragment 与 ImageFragment 类似