I have a list like fragment, and currently I am passing in info like so:
Fragment:
public void populate(Map<String, List<Book>> booksGroupedByType)
{
    BookListAdapter bookListAdapter = new BookListAdapter(this.getActivity(), booksGroupedByType);
    _lstBooks.setAdapter(bookListAdapter);
}
Activity:
private void populateBooksFragment()
{
    Map<String, List<Book>> booksGroupedByType = _repository.getAllBooksGroupedByType();
    BookListFragment bookListFragment = (BookListFragment) getFragment(R.id.fragBooks);
    if (bookListFragment != null)
    {
        bookListFragment.populate(booksGroupedByType);
    }
}
Then I felt it would be better if I could pass this information when creating the fragment, since we have no constructor available I looked up the method and found this:
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;
}
I tried to implement, but found my Map was not serializable as it was and needed more work. So my question is, why go through this? is there a disadvantage to using my original approach (populate), which would even be faster than serializing?
I thought perhaps my fragment will lose its data when rotated, but no, when rotating (in emulator) the list was kept intact.
 
     
    