Skocz do zawartości
kebuK

Jak podmieniać dane we Fragmentach

    Rekomendowane odpowiedzi

    kebuK

    Witajcie,

    w jednym Fragmencie chce podmieniać dynamicznie dane z xml (radioButtony, textView, image) - czyli za każdym przesunięciem ekranu pojawią się nowe dane. Na tą chwile (dla testów) wygląda to tak, że  "Fragment1" itd.. wpisany jest w kodzie. Jednak docelowo chcę żeby wszystkie dane były pobierane z katalogu 'res'. Jak je pobierać i dynamicznie zmieniać we Fragmencie?

    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;
    
            }
        }
    }

     

    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