Aby wyświetlić inny obraz na każdym slajdzie, musisz dodać kod, który definiuje poprawny obraz dla każdego p wiek. Ponieważ próbujesz wyświetlić kilka predefiniowanych obrazów, zgaduję, że już załadowałeś obrazy do katalogu do rysowania twojego projektu. Mając to na uwadze, przeprowadzę Cię przez brakujące elementy w the example you're following.
Jeżeli nie zostało to zrobione, utworzyć klasę ScreenSlidePageFragment
i modyfikować kod, aby wyglądać tak:
public class ScreenSlidePageFragment extends Fragment {
private static final String ARG_RESOURCE_ID = "resource_id";
private int id; // resource id of the static image to display in this page
public ScreenSlidePageFragment() {
// Required empty public constructor
}
// Your program should call this to create each instance of this Fragment.
public static ScreenSlidePageFragment newInstance(int id) {
ScreenSlidePageFragment fragment = new ScreenSlidePageFragment();
Bundle args = new Bundle();
args.putInt(ARG_RESOURCE_ID, id);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getArguments() != null) {
id = getArguments().getInt(ARG_RESOURCE_ID);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_screen_slide_page, container, false);
// assign our image's resource id here
ImageView imageView = (ImageView) view.findViewById(R.id.image);
imageView.setImageResource(id);
return view;
}
Ponieważ chcemy każdy fragment do wyświetlania obrazu z innym identyfikatorem zasobu, Dodałem parametr (id
), który można przekazać do fragmentu podczas jego tworzenia.
Teraz musimy tylko zrobić kilka drobnych zmian do ScreenSlidePagerActivity
. Najpierw dodaj statyczną tablicę zawierającą zasoby obrazu, które chcesz wykorzystać. Powinno to wyglądać mniej więcej tak:
private static final int[] IMAGES = {R.drawable.image1, R.drawable.image2, R.drawable.image3, R.drawable.image4};
Wreszcie, modyfikować swój PagerAdapter, tak że getCount
zwraca rozmiaru tablicy i getItem
wyszukuje odpowiedni identyfikator zasobu dla każdej strony przed utworzeniem fragmentu każdego slajdu.
private class ScreenSlidePagerAdapter extends FragmentStatePagerAdapter {
public ScreenSlidePagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
if (position < IMAGES.length)
return ScreenSlidePageFragment.newInstance(IMAGES[position]);
else
return null;
}
@Override
public int getCount() {
return IMAGES.length;
}
}
Prosimy przesyłać kod –
Dzięki za hojność! Czy mój kod rozwiązał twój problem? Mogę dodać więcej szczegółów, jeśli nadal masz problemy z jego uruchomieniem. –
Nie ma za co! Nie miałem czasu jeszcze go wdrożyć. Dałem ci nagrodę, ponieważ najwyraźniej dołożyłeś na nią najwięcej wysiłku (i uzyskałeś także większość upvotes). Nie mogłem ukończyć projektu na czas z innych powodów, ale zaimplementuję go, gdy będę mógł, i powiem, czy napotkam problem. Dzięki za propozycję! – GregT