166 lines
6.0 KiB
Java
166 lines
6.0 KiB
Java
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<AskTagGroupsEntity> 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<List<AskTagGroupsEntity>>() {
|
||
@Override
|
||
public void onChanged(@Nullable List<AskTagGroupsEntity> 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;
|
||
}
|
||
}
|