Java 将ArrayList传递给片段
我的MainActivity有两个片段(Tab1和Tab2)。 我已经通过XML解析两次从URL获取数据,并将其存储在MainActivity中的两个不同的ArrayList中 这两个片段具有列表视图。现在我必须将1个Arraylist传递给一个片段,将第2个Arraylist传递给第二个片段,然后将这些Arraylist显示到这两个片段的列表视图中 如何将2个ArrayList传递给这两个片段,以及如何在这2个片段中显示它们 这是一种创造活力的方法Java 将ArrayList传递给片段,java,android,android-fragments,arraylist,Java,Android,Android Fragments,Arraylist,我的MainActivity有两个片段(Tab1和Tab2)。 我已经通过XML解析两次从URL获取数据,并将其存储在MainActivity中的两个不同的ArrayList中 这两个片段具有列表视图。现在我必须将1个Arraylist传递给一个片段,将第2个Arraylist传递给第二个片段,然后将这些Arraylist显示到这两个片段的列表视图中 如何将2个ArrayList传递给这两个片段,以及如何在这2个片段中显示它们 这是一种创造活力的方法 protected void onCreat
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
loadPage();
// Creating The Toolbar and setting it as the Toolbar for the activity
toolbar = (Toolbar) findViewById(R.id.tool_bar);
setSupportActionBar(toolbar);
// Creating The ViewPagerAdapter and Passing Fragment Manager, Titles fot the Tabs and Number Of Tabs.
adapter = new ViewPagerAdapter(getSupportFragmentManager(),Titles,Numboftabs);
// Assigning ViewPager View and setting the adapter
pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(adapter);
// Assiging the Sliding Tab Layout View
tabs = (SlidingTabLayout) findViewById(R.id.tabs);
tabs.setDistributeEvenly(true); // To make the Tabs Fixed set this true, This makes the tabs Space Evenly in Available width
// Setting Custom Color for the Scroll bar indicator of the Tab View
tabs.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(int position) {
return getResources().getColor(R.color.tabsScrollColor);
}
});
// Setting the ViewPager For the SlidingTabsLayout
tabs.setViewPager(pager);
}
我在另一个函数(OnPostExecute)中有两个ArrayList,我在其中通过XML解析接收数据
我没有在两个片段中编辑任何内容。到目前为止,我只是使用列表视图创建这两个片段
片段
s有一个名为setArguments(Bundle)
的方法Bundle
内置了对各种ArrayList
的支持。只需使用您选择的键将ArrayList
放入包中即可
但是,我建议您遵循newInstance()
模式,即您的片段有一个static
newInstance()方法,该方法接受Fragment
运行所需的任何参数,在本例中是某种ArrayList
引用以下文件中的一个例子:
此捆绑包可在以后(任何时候)检索,但通常在onCreate()
或类似程序中完成。存储在上面的“索引”
可以按如下方式检索:
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) {
mIndex = args.getInt("index");
}
}
在上面的示例中,参数是一个int
,但是ArrayList
可以遵循相同的逻辑,我要注意的是,您可以通过调用getArguments()
来读取片段的onCreate()
方法中的这些参数。所以在本例中,intindex=getArguments().getLong(“index”,0)代码>其中0是默认值。@McAdams331好主意,我已经相应地更新了答案。谢谢。我必须将列表从一个活动传递到另一个片段,所以我创建了详细对象片段,并在主活动方法中设置了参数,其中有arrayList??正确的??谢谢@用户3585510此答案是否解决了您的问题?如果是这样的话,请您将此标记为答案。如果没有,请告诉我原因,我会看看是否可以进一步帮助你。
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle args = getArguments();
if (args != null) {
mIndex = args.getInt("index");
}
}