package com.gh.gamecenter.ask; import android.app.Activity; import android.arch.lifecycle.Observer; import android.arch.lifecycle.ViewModelProviders; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.view.LayoutInflater; import android.view.View; import android.widget.TextView; import com.facebook.drawee.view.SimpleDraweeView; import com.gh.base.fragment.BaseFragment; import com.gh.common.util.ImageUtils; import com.gh.common.view.TabIndicatorView; import com.gh.gamecenter.NormalActivity; import com.gh.gamecenter.R; import com.gh.gamecenter.ask.entity.AskTagGroupsEntity; import com.gh.gamecenter.ask.viewmodel.AskQuestionsNewViewModel; import com.halo.assistant.HaloApp; import com.lightgame.view.NoScrollableViewPager; import java.util.List; import butterknife.BindView; import butterknife.OnClick; import static com.gh.gamecenter.ask.AskFragment.COMMUNITIES_SELECT_REQUEST; /** * Created by khy on 5/12/17. */ public class AskQuestionsNewFragment extends BaseFragment { @BindView(R.id.ask_questions_tablayout) TabLayout mTablayout; @BindView(R.id.ask_questions_viewpager) NoScrollableViewPager mViewpager; @BindView(R.id.ask_questions_tabindicator) TabIndicatorView mTabIndicatorView; @BindView(R.id.ask_appbar) View mAppBar; @BindView(R.id.reuse_no_connection) View mNoConn; @BindView(R.id.list_loading) View mLoading; private AskQuestionsNewViewModel mModel; private List mTagGroupsList; @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == COMMUNITIES_SELECT_REQUEST && resultCode == Activity.RESULT_OK) { mTagGroupsList.clear(); mAppBar.setVisibility(View.GONE); mNoConn.setVisibility(View.GONE); mViewpager.setVisibility(View.GONE); mLoading.setVisibility(View.VISIBLE); mModel.repty(); } } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); final AskQuestionsNewViewModel.Factory factory = new AskQuestionsNewViewModel.Factory(HaloApp.getInstance().getApplication()); mModel = ViewModelProviders.of(this, factory) .get(AskQuestionsNewViewModel.class); subscribeUi(mModel); // 页面销毁时进行一次重试,防止更换社区时页面销毁导致onActivityResult无法接受到信息 if (savedInstanceState != null) { mModel.repty(); } } private void subscribeUi(AskQuestionsNewViewModel viewModel) { viewModel.getTagGroupsObservable().observe(this, new Observer>() { @Override public void onChanged(@Nullable List tagGroups) { mTagGroupsList = tagGroups; if (tagGroups != null && tagGroups.size() > 0) { initTab(); mViewpager.setVisibility(View.VISIBLE); mAppBar.setVisibility(View.VISIBLE); mNoConn.setVisibility(View.GONE); mLoading.setVisibility(View.GONE); } else { mViewpager.setVisibility(View.GONE); mAppBar.setVisibility(View.GONE); mNoConn.setVisibility(View.VISIBLE); mLoading.setVisibility(View.GONE); } } }); } @Override protected int getLayoutId() { return R.layout.fragment_ask_questions; } @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } @OnClick({R.id.reuse_no_connection}) public void onClick(View view) { switch (view.getId()) { case R.id.reuse_no_connection: mNoConn.setVisibility(View.GONE); mLoading.setVisibility(View.VISIBLE); mModel.repty(); break; } } private void initTab() { AskTagPagerFragmentAdapter adapter = new AskTagPagerFragmentAdapter(getChildFragmentManager(), mTagGroupsList); mViewpager.setAdapter(adapter); mTablayout.setupWithViewPager(mViewpager); mTabIndicatorView.setupWithTabLayout(mTablayout); mTabIndicatorView.setupWithViewPager(mViewpager); // mTabIndicatorView.setIndicatorWidth(45); if (mTagGroupsList.size() >= 4) mTablayout.addTab(mTablayout.newTab()); // 调整顺序 item for (int i = 0; i < mTablayout.getTabCount(); i++) { TabLayout.Tab tab = mTablayout.getTabAt(i); if (tab != null) { View tabView; if (mTagGroupsList.size() > i) { tabView = getTabView(mTagGroupsList.get(i)); } else { AskTagGroupsEntity tagList = new AskTagGroupsEntity(); tagList.setName(getString(R.string.ask_tab_order_title)); tagList.setIcon("res:///" + R.drawable.ask_tag_order); tabView = getTabView(tagList); tabView.setOnClickListener((view) -> { NormalActivity.startFragment(getContext(), AskTabOrderFragment.class); }); } tab.setCustomView(tabView); } } } public View getTabView(AskTagGroupsEntity tagList) { View view = LayoutInflater.from(getContext()).inflate(R.layout.ask_tab_item, null); SimpleDraweeView tabIcon = view.findViewById(R.id.tab_item_icon); ImageUtils.Companion.display(tabIcon, tagList.getIcon()); TextView tabType = view.findViewById(R.id.tab_item_type); tabType.setText(tagList.getName()); return view; } }