package cn.flightfeather.thirdapp.module.inspectioninfo; import android.content.Context; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.annotation.RequiresApi; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.content.ContextCompat; import android.support.v4.view.ViewCompat; import android.support.v4.view.ViewPager; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; import java.util.ArrayList; import java.util.List; import java.util.Objects; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import butterknife.Unbinder; import cn.flightfeather.thirdapp.R; import cn.flightfeather.thirdapp.adapter.AllRecyclerViewAdapter; import cn.flightfeather.thirdapp.bean.vo.ProblemCategoryVo; import cn.flightfeather.thirdapp.bean.vo.ProblemlistVo; import cn.flightfeather.thirdapp.util.Constant; import cn.flightfeather.thirdapp.util.Domain; /** * 2019.1.25 * @author riku * 客户界面 * 整改情况界面,展示客户未整改和已整改的问题列表 */ public class ProblemChangeActivity extends AppCompatActivity { // public final static String ARG_PROBLEM = "problem"; public final static String ARG_TOTAL_PROBLEM = "totalProblem"; private ArrayList problemlistVos; private ArrayList problemCategories; private List newSelectedTypes; private List curSelectedTypes; private final String TITLE = "整改"; private final String POPUP_TITLE = "问题类型"; private Unbinder unbinder; // // @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //设置允许使用转场动画 getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS); setContentView(R.layout.activity_problem_change_pollution_scene); unbinder = ButterKnife.bind(this); Intent intent = getIntent(); problemlistVos = (ArrayList) intent.getSerializableExtra(ARG_PROBLEM); problemCategories = (ArrayList) intent.getSerializableExtra(ARG_TOTAL_PROBLEM); newSelectedTypes = new ArrayList<>(); curSelectedTypes = new ArrayList<>(); initToolBar(); initTab(); initViewPager(); initPopup(); } @Override protected void onDestroy() { super.onDestroy(); if (unbinder != null) { unbinder.unbind(); } } // // @BindView(R.id.action_bar) View action_bar; @BindView(R.id.img_right) ImageView img_right; @BindView(R.id.img_left) ImageView img_left; @BindView(R.id.text_left) TextView text_left; @BindView(R.id.text_right) TextView text_right; @BindView(R.id.actionbar_title) TextView title; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void initToolBar() { // action_bar.setElevation(0); // action_bar.setBackgroundColor(Color.alpha(0)); action_bar.findViewById(R.id.spinner_topclass_task).setVisibility(View.GONE); // action_bar.findViewById(R.id.img_left).setVisibility(View.GONE); img_right.setImageResource(R.drawable.ic_filter_list_white_36dp); action_bar.findViewById(R.id.ll_menu_text).setVisibility(View.GONE); title.setText(TITLE); } @OnClick(R.id.img_left) void onClickBack() { this.finish(); } @OnClick(R.id.img_right) void onClickFilter() { popShow(); newSelectedTypes.clear(); newSelectedTypes.addAll(curSelectedTypes); // img_left.setVisibility(View.INVISIBLE); // img_right.setVisibility(View.INVISIBLE); // text_left.setVisibility(View.VISIBLE); // text_right.setVisibility(View.VISIBLE); // title.setTitle(POPUP_TITLE); } // // @BindView(R.id.tabLayout) TabLayout tabLayout; @BindView(R.id.viewPager) ViewPager viewPager; private List tabIndicators;//tab标题 private List tabFragments;//内容 private ContentPagerAdapter contentAdapter;//viewPager内容页面适配器 private void initTab(){ // tabLayout.setTabMode(TabLayout.MODE_SCROLLABLE); tabLayout.setTabGravity(Gravity.CENTER_HORIZONTAL); tabLayout.setTabTextColors(ContextCompat.getColor(this, R.color.unselected), ContextCompat.getColor(this, R.color.main_text_color)); tabLayout.setSelectedTabIndicatorColor(ContextCompat.getColor(this, R.color.main_text_color)); ViewCompat.setElevation(tabLayout, 2); tabLayout.setupWithViewPager(viewPager);//将tab和viewPager绑定 } private ArrayList unChangedProblems = new ArrayList<>(); private ArrayList changedProblems = new ArrayList<>(); private void initViewPager(){ this.changedProblems.clear(); this.unChangedProblems.clear(); for (int i = 0; i < problemlistVos.size(); i++) { ProblemlistVo problemlistVoTemp = problemlistVos.get(i); if (!problemlistVoTemp.getIschanged()) { this.unChangedProblems.add(problemlistVoTemp); } else if (!Objects.equals(problemlistVoTemp.getExtension3(), Domain.CHANGE_CHECK_PASS)) { this.unChangedProblems.add(problemlistVoTemp); } else { this.changedProblems.add(problemlistVoTemp); } } tabIndicators = new ArrayList<>(); tabIndicators.add("待整改问题"); tabIndicators.add("已整改问题"); tabFragments = new ArrayList<>(); tabFragments.add(ProblemChangeFragment.newInstance(this.unChangedProblems, Constant.UNCHANGED)); tabFragments.add(ProblemChangeFragment.newInstance(this.changedProblems, Constant.CHANGED)); contentAdapter = new ContentPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(contentAdapter); } //刷新ViewPager public void refreshViewPager() { this.changedProblems.clear(); this.unChangedProblems.clear(); for (int i = 0; i < problemlistVos.size(); i++) { ProblemlistVo problemlistVoTemp = problemlistVos.get(i); if (!problemlistVoTemp.getIschanged()) { this.unChangedProblems.add(problemlistVoTemp); } else if (!Objects.equals(problemlistVoTemp.getExtension3(), Domain.CHANGE_CHECK_PASS)) { this.unChangedProblems.add(problemlistVoTemp); } else { this.changedProblems.add(problemlistVoTemp); } } ProblemChangeFragment pf1 = (ProblemChangeFragment) tabFragments.get(0); ProblemChangeFragment pf2 = (ProblemChangeFragment) tabFragments.get(1); pf1.notifyDataSetChanged(); pf2.notifyDataSetChanged(); } //整改完成后,刷新问题列表 public void refreshProblemList(ProblemlistVo problemlistVo) { if (problemlistVo==null) return; for (ProblemlistVo p : this.problemlistVos) { if (p.getGuid().equals(problemlistVo.getGuid())) { this.problemlistVos.remove(p); break; } } this.problemlistVos.add(problemlistVo); } /** * viewPager适配器 */ class ContentPagerAdapter extends FragmentPagerAdapter { public ContentPagerAdapter(FragmentManager fm) { super(fm); } @Override public Fragment getItem(int position) { return tabFragments.get(position); } @Override public int getCount() { return tabIndicators.size(); } @Override public CharSequence getPageTitle(int position) { return tabIndicators.get(position); } } // // private void showSelectedProblemType(List type) { problemlistVos.clear(); for (int t : type) { problemlistVos.addAll(problemCategories.get(t).getProblemlistVos()); } if (type.isEmpty()) { for (ProblemCategoryVo p : problemCategories) { problemlistVos.addAll(p.getProblemlistVos()); } } refreshViewPager(); } // // private FilterPopupWindow popupWindow; private boolean popupIsShowing; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void initPopup() { popupWindow = new FilterPopupWindow(this, problemCategories); } private void popShow() { popupWindow.showAtLocation(action_bar, Gravity.BOTTOM, 0, 0); popupIsShowing = true; setWindowAloha(0.6f); } private void popDismiss() { popupWindow.dismiss(); popupIsShowing = false; } private void setWindowAloha(float f) { Window window=getWindow(); WindowManager.LayoutParams wl = window.getAttributes(); wl.alpha = f; window.setAttributes(wl); } private void popupRefresh() { popupWindow.notifyDataSetChanged(); } class FilterPopupWindow extends PopupWindow { private List datas; RecyclerView rv_problem_type; AllRecyclerViewAdapter adapter; @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) public FilterPopupWindow(Context context, List datas) { super(context); this.datas = datas; setHeight(ViewGroup.LayoutParams.WRAP_CONTENT); setWidth(ViewGroup.LayoutParams.MATCH_PARENT); setElevation(2f); setBackgroundDrawable(null); setOutsideTouchable(true); setFocusable(true); setAnimationStyle(R.style.popwin_anim_style); setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { setWindowAloha(1f); } }); View contentView = LayoutInflater.from(ProblemChangeActivity.this).inflate(R.layout.popup_problem_selector, null, false); initView(contentView); setClickListener(contentView); setContentView(contentView); } private void initView(View view) { rv_problem_type = view.findViewById(R.id.rv_problem_type_2); adapter = new AllRecyclerViewAdapter(datas, R.layout.item_problem_type, ProblemChangeActivity.this) { @Override public void bindView(final AllRecyclerViewAdapter.MyViewHolder holder, final ProblemCategoryVo obj, final boolean isSelected, final int position) { final Integer pos = position; //填充问题类型名称 holder.setText(R.id.text_problem_type, obj.getProblemTypeName()); //根据问题数量设置点击事件 if (obj.getTotalCount() == 0) { holder.setAlpha(R.id.text_problem_type, 0.2f); holder.setOnClickListener(R.id.text_problem_type, null); } else { holder.setOnClickListener(R.id.text_problem_type, new View.OnClickListener() { @Override public void onClick(View v) { v.setSelected(!v.isSelected()); if (v.isSelected()) { newSelectedTypes.add(pos); } else { newSelectedTypes.remove(pos); } } }); holder.setAlpha(R.id.text_problem_type, 1f); } //根据用户的选择设置是否选择状态 if (curSelectedTypes.contains(pos)) { holder.setSelected(R.id.text_problem_type, true); } else { holder.setSelected(R.id.text_problem_type, false); } } }; GridLayoutManager layoutManager = new GridLayoutManager(ProblemChangeActivity.this, 3); layoutManager.setOrientation(LinearLayoutManager.VERTICAL); rv_problem_type.setLayoutManager(layoutManager); rv_problem_type.setAdapter(adapter); } private void setClickListener(View v) { TextView text_complete = v.findViewById(R.id.text_complete); TextView text_cancel = v.findViewById(R.id.text_cancel); text_complete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popDismiss(); curSelectedTypes.clear(); curSelectedTypes.addAll(newSelectedTypes); showSelectedProblemType(curSelectedTypes); popupRefresh(); } }); text_cancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { popDismiss(); } }); } public void notifyDataSetChanged() { adapter.notifyDataSetChanged(); } } // }