0

Я пытаюсь реализовать действие с вкладками в панели действий и представлением пейджера. У меня есть один и тот же фрагмент для каждой вкладки. Мне нужно обновить фрагменты после вызова onCreateView, передачи объектов.Обновить представление фрагмента после onCreateView в FragmentPagerAdapter

Пейджер адаптер:

public class MyFragmentPagerAdapter extends FragmentPagerAdapter { 

    public MyFragmentPagerAdapter() { 
     super(getSupportFragmentManager()); 
    } 

    @Override 
    public int getCount() { 
     return cat_pages.getList_categories().size(); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     Log.i("position fragment", "i = " + position); 

    final Handler uiHandler = new Handler(); 
    int index = position; 

    final Category cat = cat_pages.getList_categories().get(index); 
    Log.i("position fragment", "name = " + cat.getName()); 

    mCategoriesFragment = new ListPostFragment(); 

     return mCategoriesFragment; 
    } 
} 

Фрагмент:

public class ListPostFragment extends Fragment { 

// Layouts 
private LinearLayout layout_loading; 
public static GridView list_view_articles; 
private TextView txt_nothing, txt_title; 

// The list of headlines that we are displaying 
private List<Post> mPostsList = new ArrayList<Post>(); 
private List<Post> list_posts = new ArrayList<Post>(); 

// The list adapter for the list we are displaying 
private ArticlesAdapter mListAdapter; 

private Category mCurrentCat; 

Category clicked_cat; 
String activity; 
String title; 

public ListPostFragment() { 
     super(); 
} 

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

    mListAdapter = new ArticlesAdapter(getActivity(), mPostsList); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_grid_posts, container, false); 

    layout_loading = (LinearLayout) rootView.findViewById(R.id.layout_loading); 
    list_view_articles = (GridView) rootView.findViewById(R.id.gridViewArticles); 
    txt_nothing = (TextView) rootView.findViewById(R.id.txt_no_result); 
    txt_title = (TextView) rootView.findViewById(R.id.txt_title); 
    Log.i("frag", "frag create view"); 

    return rootView; 
} 

@Override 
public void onStart() { 
    super.onStart(); 
    list_view_articles.setAdapter(mListAdapter); 
} 

public void loadPosts(Category clicked_cat, List<Post> list_posts, String title) { 

    Log.i("frag", "frag load"); 
    layout_loading.setVisibility(View.VISIBLE); 
    list_view_articles.setVisibility(View.GONE); 
    txt_title.setVisibility(View.GONE); 

    mPostsList.clear(); 

    layout_loading.setVisibility(View.GONE); 

    if(list_posts != null){ 
     mPostsList.addAll(list_posts); 

    if(mPostsList.size() > 0){ 
     list_view_articles.setVisibility(View.VISIBLE); 
     txt_nothing.setVisibility(View.GONE); 
    }else{ 
      list_view_articles.setVisibility(View.GONE); 
     txt_nothing.setVisibility(View.VISIBLE); 
    } 

    mListAdapter.notifyDataSetChanged(); 
    }else{ // Nothing to display 
     list_view_articles.setVisibility(View.GONE); 
    txt_nothing.setVisibility(View.VISIBLE); 
    } 
} 
} 

==> Что мне нужно позвонить loadPosts (...) в PagerAdapter GetItem() после того, как onCreateView был вызван.

Любая помощь очень ценится.

+0

Может быть, вы можете использовать Приемник и намерение Broacast –

ответ

0

Вы должны пройти категорию как Extra фрагменту так:

Bundle bundle = new Bundle(); 
bundle.putSerializable("CATEGORY", cat); 
mCategoriesFragment.setArguments(bundle); 

, а затем в OnCreate() во фрагменте вы можете прочитать его с помощью:

Bundle bundle = this.getArguments(); 
Category cat = (Category) bundle.getSerializable("CATEGORY"); 
// now you can call loadPosts() 
Смежные вопросы