我有一个班级作为我的模特。
class Model {
String name;
String address;
}
我有一个带有'n'元素的类的对象数组。
List<Model> modelElements;
我正在尝试使用'n'个片段来实现ViewPager。 ViewPager中的每个片段都完全相同,但显示的数据是从模型的每个元素中选取的。我已经实现了一个基本的Fragment,它有两个TextView,每个TextView用于显示名称和地址。
我想知道如何将Model类的对象传递给每个Fragment。因此,modelElements [0]对应于ViewPager中的第一个Fragment,modelElements [1]对应于第二个Fragment,依此类推。
一种方法是使用Bundle。但是ViewPager创建Fragments的方式并没有让我接触到FragmentTransaction。
class MyViewPagerAdapter extends FragmentStatePagerAdapter {
public MyViewPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int i) {
if (i == 0) {
return MyFragment.newInstance();
} else if (i == 1) {
return MyFragment.newInstance();
} else if (i == 2) {
return MyFragment.newInstance();
}
return null;
}
}
传递数据的最佳方式是什么?
另外,这听起来很愚蠢 - 为每组不同的数据创建相同Fragment的新实例。 Android提供的其他构造是否符合我的要求?
答案 0 :(得分:1)
1)使您的模型实现Parcelable接口。
2)将您的模型传递给newInstance()
,使其变为newInstance(Model model)
3)在newInstance()
创建包中,设置片段的参数,其值为model
4)从onCreate
fragment
中检索模型
答案 1 :(得分:0)
下面是我创建的演示代码,用于动态加载视图页面中的不同网址,但是在视图页面中有动态网址传递给每个视图,如下所示:
// ... do other initialization, such as create an ActionBar ...
pagerAdapter = new MainPagerAdapter();
pager = (ViewPager) findViewById(R.id.view_pager);
pager.setAdapter(pagerAdapter);
WebView w1 = new WebView(MainActivity.this);
w1.setWebViewClient(new WebViewClient());
w1.loadUrl("http://www.google.com");
WebView w2 = new WebView(MainActivity.this);
w2.setWebViewClient(new WebViewClient());
w2.loadUrl("http://www.live.com");
pagerAdapter.addView(w1, 0);
pagerAdapter.addView(w2, 1);