Witajcie,
jak w tym kodzie dodać jeszcze `image` i `radiobuttony`, żebybył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.
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;
}