Skocz do zawartości
kebuK

Jak przekazywać dane do podmienianych Fragmentów

    Rekomendowane odpowiedzi

    kebuK

    Witajcie,

    jak w tym kodzie dodać jeszcze `image` i `radiobuttony`, żeby były dynamicznie podmieniane? Na tą chwilę jak widać w kodzie wyświetla się tylko tekst "Fragment1", Fragment2", itd..   W każdym wyświetlanym Fragmencie chcę wyświetlić dane z textView, imageView i radiobuttony. I w każdym Fragmencie wszystkie te dane będą inne. Layout wszędzie ten sam. Dane pobierane z katalogu 'res'.

    Jeśli można prosić o dokładne wyjaśnienie z racji że jestem początkującym w programowaniu.

    Serdecznie dziękuje.

    Cytuj
    public class MainActivity extends AppCompatActivity {
    
        private ViewPager viewPager;
    
        private ArrayList<String> strs;
    
        private FragmentPagerAdapter adapter;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.i("x","onCreateActivity");
    
    
            // create an custom array list of your object class here which you can pass to pager adapter
            strs = new ArrayList<String>();
            strs.add("Fragment 1");
            strs.add("Fragment 2");
            strs.add("Fragment 3");
            strs.add("Fragment 4");
            strs.add("Fragment 5");
    
    
            viewPager = (ViewPager) findViewById(R.id.pager);
    
            adapter = new FragmentPagerAdapter(getSupportFragmentManager(), strs);
            viewPager.setAdapter(adapter);
        }
    
        public class FragmentPagerAdapter extends FragmentStatePagerAdapter {
    
            private ArrayList<String> itemData;
    
            public FragmentPagerAdapter(FragmentManager fm, ArrayList<String> itemData) {
                super(fm);
                this.itemData = itemData;
            }
    
            @Override
            public int getCount()
            {
                return itemData.size();
            }
            @Override
            public void destroyItem(ViewGroup container, int position, Object object) {
                super.destroyItem(container, position, object);
                Log.i("x","destroyItem");
            }
            @Override
            public Fragment getItem(int position){
            Log.i("x","getItem");
                // pass data to fragment
                Fragment1 f = Fragment1.newInstance(itemData.get(position));
                return f;
    
            }
        }
    }

     

    A we `Fragmencie` używam `bundle`

     

    public class Fragment1 extends Fragment {
    
        public  Fragment1(){}
    
        String stringValue;
    
        // static method to create the Fragment1 frag containing string
        public  static Fragment1 newInstance(String str)
        {
            Fragment1 slider=new Fragment1();
            Bundle b=new Bundle();
            b.putString("stringValue", str);
            slider.setArguments(b);
            return slider;
        }

     

    Edytowane przez kebuK

    Udostępnij tę odpowiedź


    Odnośnik do odpowiedzi
    Udostępnij na innych stronach

    Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

    Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

    Zarejestruj nowe konto

    Załóż nowe konto. To bardzo proste!

    Zarejestruj się

    Zaloguj się

    Posiadasz już konto? Zaloguj się poniżej.

    Zaloguj się

    • Ostatnio przeglądający   0 użytkowników

      Brak zarejestrowanych użytkowników przeglądających tę stronę.

    x