package com.dl7.mvp.module.news.main; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.view.ViewPager; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import com.dl7.mvp.R; import com.dl7.mvp.adapter.ViewPagerAdapter; import com.dl7.mvp.injector.components.DaggerNewsMainComponent; import com.dl7.mvp.injector.modules.NewsMainModule; import com.dl7.mvp.local.table.NewsTypeInfo; import com.dl7.mvp.module.base.BaseFragment; import com.dl7.mvp.module.base.IRxBusPresenter; import com.dl7.mvp.module.news.channel.ChannelActivity; import com.dl7.mvp.module.news.newslist.NewsListFragment; import com.dl7.mvp.rxbus.event.ChannelEvent; import java.util.ArrayList; import java.util.List; import javax.inject.Inject; import butterknife.BindView; import rx.functions.Action1; /** * Created by long on 2016/12/20. * 新闻主界面 */ public class NewsMainFragment extends BaseFragment<IRxBusPresenter> implements INewsMainView { @BindView(R.id.tool_bar) Toolbar mToolBar; @BindView(R.id.tab_layout) TabLayout mTabLayout; @BindView(R.id.view_pager) ViewPager mViewPager; @Inject ViewPagerAdapter mPagerAdapter; @Override protected int attachLayoutRes() { return R.layout.fragment_news_main; } @Override protected void initInjector() { DaggerNewsMainComponent.builder() .applicationComponent(getAppComponent()) .newsMainModule(new NewsMainModule(this)) .build() .inject(this); } @Override protected void initViews() { initToolBar(mToolBar, true, "新闻"); setHasOptionsMenu(true); mViewPager.setAdapter(mPagerAdapter); mTabLayout.setupWithViewPager(mViewPager); mPresenter.registerRxBus(ChannelEvent.class, new Action1<ChannelEvent>() { @Override public void call(ChannelEvent channelEvent) { _handleChannelEvent(channelEvent); } }); } @Override protected void updateViews(boolean isRefresh) { mPresenter.getData(isRefresh); } @Override public void loadData(List<NewsTypeInfo> checkList) { List<Fragment> fragments = new ArrayList<>(); List<String> titles = new ArrayList<>(); for (NewsTypeInfo bean : checkList) { titles.add(bean.getName()); fragments.add(NewsListFragment.newInstance(bean.getTypeId())); } mPagerAdapter.setItems(fragments, titles); } @Override public void onDestroy() { super.onDestroy(); mPresenter.unregisterRxBus(); } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { inflater.inflate(R.menu.menu_channel, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.item_channel) { ChannelActivity.launch(mContext); return true; } return false; } /** * 处理频道事件 * @param channelEvent */ private void _handleChannelEvent(ChannelEvent channelEvent) { switch (channelEvent.eventType) { case ChannelEvent.ADD_EVENT: mPagerAdapter.addItem(NewsListFragment.newInstance(channelEvent.newsInfo.getTypeId()), channelEvent.newsInfo.getName()); break; case ChannelEvent.DEL_EVENT: // 如果是删除操作直接切换第一项,不然容易出现加载到不存在的Fragment mViewPager.setCurrentItem(0); mPagerAdapter.delItem(channelEvent.newsInfo.getName()); break; case ChannelEvent.SWAP_EVENT: mPagerAdapter.swapItems(channelEvent.fromPos, channelEvent.toPos); break; } } }