ViewPager frage

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • ViewPager frage

    Hallo miteinander,

    ich stecke etwas fest an einem Punkt und komme einfach nicht weiter. Ich möchte ganz einfach dem "viewPager.setAdapter()" den Wert aus "String Category_l = intent.getExtras().getString("Category_l");" übergeben, aber ich komme einfach nicht drauf, wie ich das machen soll und was ich in den Verschiedensten sachen die ich probiert habe falsch mache, vielleicht stehe ich auf dem Schlauch und es ist eigentlich ganz einfach. Ich würde mich über jede Hilfe freuen.

    Vielen Dank

    Grüße
    Christoph

    Quellcode

    1. tvTitel_l = (TextView) findViewById(R.id.textTitel_l);
    2. //Recieve data
    3. Intent intent = getIntent();
    4. String Titel_l = intent.getExtras().getString("Titel_l");
    5. String Category_l = intent.getExtras().getString("Category_l");
    6. //Setting values
    7. tvTitel_l.setText(Titel_l);
    8. ViewPager viewPager = (ViewPager) findViewById(R.id.fullimage_l_v);
    9. viewPager.setAdapter(Category_l);
    Alles anzeigen
  • Hi,

    die Methode viewPager.setAdapter erwartet einen PagerAdapter und keinen String. Das kann also nicht funktionieren.

    Siehe hier:
    developer.android.com/referenc…pager.widget.PagerAdapter)
  • ok ich versuchs mal irgendwie verständlich nachvollziehbar zu beschreiben. :)

    Ich habe eine ArrayList, in dieser befinden "Titel" "Adpater" "Thumbnail" Diese werden in einem RecyclerView kombi mit GridView dargestellt und sind Filterable. Bei onClick öffnet sich eine neue Activity und bekommt "Titel" übergeben und soll auch den "Adapter übergeben bekommen. Den Adapter benötige ich um dem ViewPager mit einen PhotoView die ImageResource mit 3 Bildern jeweils zu übergeben.


    ImageAdapter:

    Quellcode

    1. public class ImageAdapter extends PagerAdapter {
    2. private Context mContext;
    3. private int[] mImageIds = new int[] {R.drawable.sop_acs_1, R.drawable.sop_acs_2, R.drawable.sop_acs_3};
    4. public ImageAdapter(Context context) {
    5. mContext = context;
    6. }
    7. @Override
    8. public int getCount() {
    9. return mImageIds.length;
    10. }
    11. @Override
    12. public boolean isViewFromObject(View view, Object object) {
    13. return view == object;
    14. }
    15. @Override
    16. public Object instantiateItem(ViewGroup container, int position) {
    17. PhotoView imageView = new PhotoView(mContext);
    18. imageView.setScaleType(PhotoView.ScaleType.CENTER_INSIDE);
    19. imageView.setImageResource( mImageIds[position]);
    20. container.addView(imageView, 0);
    21. return imageView;
    22. }
    23. @Override
    24. public void destroyItem( ViewGroup container, int position, Object object) {
    25. container.removeView((PhotoView) object);
    26. }
    27. }
    Alles anzeigen


    Ich habe aber mehrere "ImageAdapter" damit ich je nachdem was angeklickt wird diesen laden könnte.

    Im code oben ist es "acs" es gäbe z.B. noch "ana" "anap" usw.

    für meine liste:

    Quellcode

    1. public class land_list {
    2. private String Title_l;
    3. private String Adapter_l;
    4. private int Photo_l;
    5. private int Photo2_l;
    6. private int Photo3_l;
    7. private int Thumbnail_l;
    8. public land_list() {
    9. }
    10. public land_list(String title_l, String adapter_l, int photo_l, int photo2_l, int photo3_l, int thumbnail_l) {
    11. Title_l = title_l;
    12. Adapter_l = adapter_l;
    13. Photo_l = photo_l;
    14. Photo2_l = photo2_l;
    15. Photo3_l = photo3_l;
    16. Thumbnail_l = thumbnail_l;
    17. }
    18. public land_list(String title_l, String adapter_l, Integer photo_l, Integer photo1_l, Integer photo2_l) {
    19. }
    20. public String getTitle_l() { return Title_l; }
    21. public String getAdapter_l() {
    22. return Adapter_l;
    23. }
    24. public int getPhoto_l() {
    25. return Photo_l;
    26. }
    27. public int getPhoto2_l() { return Photo2_l; }
    28. public int getPhoto3_l() { return Photo3_l; }
    29. public int getThumbnail_l() {
    30. return Thumbnail_l;
    31. }
    32. public void setTitle_l(String title_l) {
    33. Title_l = title_l;
    34. }
    35. public void setCAdapter_l(String adapter_l) {
    36. Adapter_l = adapter_l;
    37. }
    38. public void setPhoto_l(int photo_l) {
    39. Photo_l = photo_l;
    40. }
    41. public void setPhoto2_l(int photo2_l) { Photo2_l = photo2_l; }
    42. public void setPhoto3_l(int photo3_l) { Photo3_l = photo3_l; }
    43. public void setThumbnail_l(int thumbnail_l) {
    44. Thumbnail_l = thumbnail_l;
    45. }
    46. }
    Alles anzeigen


    Quellcode

    1. lstlandw = new ArrayList<>();
    2. lstlandw.add(new land_list("SOP – Akutes Coronar-Syndrom (ACS)","acs",R.drawable.sop_acs_1,R.drawable.sop_acs_2,R.drawable.sop_acs_3,R.drawable.sop_acs_1_klein));
    3. lstlandw.add(new land_list("SOP – Anaphylaxie Kinder bis 10kg/KG","anapk",R.drawable.sop_anap_k_1 , R.drawable.sop_anap_k_2 , R.drawable.sop_anap_k_3,R.drawable.sop_anap_k_1_klein));
    4. lstlandw.add(new land_list("SOP – Anaphylaxie Kinder ab 10kg/KG und Erwachsene","anap",R.drawable.sop_anap_erw_1,R.drawable.sop_anap_erw_2,R.drawable.sop_anap_erw_3,R.drawable.sop_anap_erw_1_klein));
    5. usw.
  • Bei onClick öffnet sich eine neue Activity und bekommt "Titel" übergeben und soll auch den "Adapter übergeben bekommen.
    Das ist ja jetzt wider ein etwas anderes Thema du willst einer Activity ein Objekt (Adapter) mit einen Intent Bundle Übergeben . Das geht so nicht. Java ist Call by Value.

    Im Budle werden nur Key Wert Paare übergeben.

    Möglichkeit ist das erstellen eines Parcelable.
    andreasschrade.com/android/201…on-parcelable-uebergeben/
    Ein Feedback auf Tipps ist auch schön. :P
  • allerdings müsste ich damit das so wie ich mir das überlegt habe, auch funktioniert, ich den Namen des Adapters übergeben können jedes mal.
    Wo und wie willst du das übergeben ? Was willst du mit dem Namen des Adapters ? Du wist doch das Objekt haben und nicht den Namen.





    Ich würde hier wohl einen etwas anderen Weg gehen um Daten von Activity zur anderen Activity zu übergeben.
    Besser gesagt um von beiden Activitys auf die gleiche Daten Klasse zuzugreifen.

    Dafür würde ich eine Singelton Klasse benutzen. Oder neuer ein ViewModel.


    Von der Singelton Klasse gibt es nur eine Instanz und die kannst du dir in jeder Activity zur Laufzeit holen und somit auch zugreifen.
    Schaue dir das Prinzip mal an.
    Ein Feedback auf Tipps ist auch schön. :P

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von jogimuc ()