簡體   English   中英

將ArrayList傳遞給碎片

[英]Passing ArrayList to Fragments

我有MainActivity有兩個片段(Tab1和Tab2)。 我通過XML解析2次從URL獲取數據,並在MainActivity中存儲在2個不同的ArrayList中。

這兩個片段有列表視圖。 現在我必須將1個Arraylist傳遞給一個片段並將第二個ArrayList傳遞給第二個片段,然后將這些ArrayList顯示到這兩個片段的Lis​​tViews中。

我如何將2個Arraylists傳遞給這兩個片段以及如何在這兩個片段中顯示它們。

這是MinActivity的創建方法

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解析接收數據。

我沒有在兩個片段中編輯任何內容。 到目前為止,我只用List View創建這兩個片段

Fragment有一個名為setArguments(Bundle) Bundle內置了對各種ArrayList支持。 您只需使用您選擇的鍵將ArrayList放入Bundle

但是,我建議你遵循newInstance(<parameters>)模式,你的Fragment有一個static newInstance()方法,該方法接受Fragment所需的任何參數,在這種情況下是某種類型的ArrayList

引用官方Fragment文檔中的示例:

public static DetailsFragment newInstance(int index) {
    DetailsFragment f = new DetailsFragment();

    // Supply index input as an argument.
    Bundle args = new Bundle();
    args.putInt("index", index);
    f.setArguments(args);

    return f;
}

Bundle可以在以后(任何時間)檢索,但通常在onCreate()或類似的情況下完成。 上面存儲的"index"可以按如下方式檢索:

@Override public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    Bundle args = getArguments();
    if (args != null) {
        mIndex = args.getInt("index");
    }
}

在上面的示例中,參數是一個int ,但是可以使用ArrayList跟隨相同的邏輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM