Files
assistant-android/app/src/main/java/com/gh/gamecenter/ask/AskQuestionsNewFragment.java

166 lines
6.0 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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;
}
}