Commit afd7573ccdd09b599dbb134916c4900459a9b97d

Authored by YangShuai
1 parent c14df5e9

1 修复pop控件item点击没有反应的问题

module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/frame/view/AllDeviceFragmentView.java
1 1 package com.cnlive.strike.xiaojiaspeaker.frame.view;
2 2  
3 3 import android.app.Activity;
  4 +import android.graphics.Color;
4 5 import android.support.v7.widget.LinearLayoutManager;
  6 +import android.util.Log;
  7 +import android.view.View;
5 8  
  9 +import com.cnlive.strike.xiaojiaspeaker.R;
6 10 import com.cnlive.strike.xiaojiaspeaker.model.AllDeviceInfo;
7 11 import com.cnlive.strike.xiaojiaspeaker.ui.activity.BlueToothStep1Activity;
  12 +import com.cnlive.strike.xiaojiaspeaker.ui.activity.DeviceManagerActivity;
8 13 import com.cnlive.strike.xiaojiaspeaker.ui.adapter.AllDeviceAdapter;
9 14 import com.cnlive.strike.xiaojiaspeaker.ui.fragment.AllDeviceFragment;
  15 +import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenu;
  16 +import com.cnlive.strike.xiaojiaspeaker.ui.widget.popmenu.PopMenuInfo;
10 17 import com.hannesdorfmann.mosby3.mvp.MvpView;
  18 +import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton;
11 19  
12 20 import java.util.ArrayList;
13 21 import java.util.List;
... ... @@ -16,6 +24,9 @@ public class AllDeviceFragmentView implements MvpView {
16 24 private AllDeviceFragment fragment;
17 25 private AllDeviceAdapter adapter;
18 26 private List<AllDeviceInfo> allDeviceInfoList;
  27 + private List<PopMenuInfo> popMenuInfoList = null;
  28 + private PopMenu mPopMenu;
  29 + private String TAG = "AllDeviceFragmentView";
19 30  
20 31 public AllDeviceFragmentView(AllDeviceFragment fragment) {
21 32 this.fragment = fragment;
... ... @@ -26,6 +37,7 @@ public class AllDeviceFragmentView implements MvpView {
26 37 }
27 38  
28 39 public void initView() {
  40 + initPopView();
29 41 AllDeviceInfo allDeviceInfo = new AllDeviceInfo();
30 42 allDeviceInfoList = new ArrayList<>();
31 43 allDeviceInfoList.add(allDeviceInfo);
... ... @@ -38,5 +50,58 @@ public class AllDeviceFragmentView implements MvpView {
38 50 BlueToothStep1Activity.startActivity(fragment.getActivity());
39 51 }
40 52 });
  53 + adapter.setOnItemClickListener(new AllDeviceAdapter.OnItemClickListener() {
  54 + @Override
  55 + public void onItemClick(int position, AllDeviceInfo AllDeviceInfo) {
  56 + DeviceManagerActivity.startActivity(fragment.getActivity());
  57 + }
  58 + });
  59 + }
  60 +
  61 + public void initPopView() {
  62 + popMenuInfoList = new ArrayList<>();
  63 + PopMenuInfo popMenuInfo = new PopMenuInfo();
  64 + popMenuInfo.setTitle("使用者管理");
  65 + popMenuInfo.setNetImag("zsdfs");
  66 + popMenuInfoList.add(popMenuInfo);
  67 + popMenuInfo = new PopMenuInfo();
  68 + popMenuInfo.setTitle("添加设备");
  69 + popMenuInfo.setNetImag("zsdfs");
  70 + popMenuInfoList.add(popMenuInfo);
  71 +// popMenuInfo = new PopMenuInfo();
  72 +// popMenuInfo.setTitle("设备管理");
  73 +//// popMenuInfo.setNetImag("zsdfs");
  74 +// popMenuInfoList.add(popMenuInfo);
  75 +
  76 + if (null == mPopMenu) {
  77 + mPopMenu = new PopMenu.Builder(fragment.getActivity())
  78 + .addData(popMenuInfoList)
  79 + .setBackgroundColorArray(new int[]{Color.parseColor("#363636"), Color.parseColor("#BF000000"), Color.parseColor("#BF000000")})
  80 + .setLeftAndRightMargin(20)
  81 + .setTopMargin(20)
  82 + .setLineColor(R.color.white_50)
  83 + .setTextColor(R.color.white)
  84 + .setLineVisible(View.VISIBLE)
  85 +// .setArrowHeight(30f)
  86 +// .setArrowHeight(30f)
  87 + //.setCancelable(false)
  88 + .setCornerRadius(10f)
  89 + .build();
  90 + }
  91 +
  92 + mPopMenu.setmItemClickListener(new PopMenu.OnItemClickListener() {
  93 + @Override
  94 + public void onClick(int position, PopMenuInfo popMenuInfo) {
  95 + if (position == 1) {
  96 + BlueToothStep1Activity.startActivity(fragment.getActivity());
  97 + }
  98 + }
  99 + });
  100 + }
  101 +
  102 + public void showPop(View view) {
  103 + if (null != getContext() && null != mPopMenu) {
  104 + mPopMenu.show(view);
  105 + }
41 106 }
42 107 }
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/activity/DeviceManagerActivity.java
1 1 package com.cnlive.strike.xiaojiaspeaker.ui.activity;
2 2  
  3 +import android.app.Activity;
  4 +import android.content.Intent;
3 5 import android.databinding.DataBindingUtil;
4 6 import android.support.v7.app.AppCompatActivity;
5 7 import android.os.Bundle;
... ... @@ -23,4 +25,8 @@ public class DeviceManagerActivity extends AppCompatActivity {
23 25 getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, DeviceManagerFragment.newInstance()).commitAllowingStateLoss();
24 26  
25 27 }
  28 +
  29 + public static void startActivity(Activity activity) {
  30 + activity.startActivity(new Intent(activity, DeviceManagerActivity.class));
  31 + }
26 32 }
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/fragment/AllDeviceFragment.java
... ... @@ -23,6 +23,8 @@ import java.util.List;
23 23  
24 24 public class AllDeviceFragment extends MvpBindingFragment<AllDeviceFragmentView, AllDeviceFragmentPresenter, Object, FragmentAllDeviceBinding> {
25 25 private UIPopup qmuiPopup;
  26 + private QMUIAlphaImageButton addButton;
  27 + ;
26 28  
27 29 public static AllDeviceFragment newInstance() {
28 30 AllDeviceFragment fragment = new AllDeviceFragment();
... ... @@ -39,8 +41,6 @@ public class AllDeviceFragment extends MvpBindingFragment&lt;AllDeviceFragmentView,
39 41 super.onActivityCreated(savedInstanceState);
40 42 }
41 43  
42   - QMUIAlphaImageButton button;
43   - QMUIAlphaImageButton button1;
44 44  
45 45 @Override
46 46 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
... ... @@ -57,52 +57,23 @@ public class AllDeviceFragment extends MvpBindingFragment&lt;AllDeviceFragmentView,
57 57 if (null != binding) {
58 58 binding.topbar.setTitle("所有设备");
59 59 //设置返回按钮
60   - button1 = binding.topbar.addLeftImageButton(R.drawable.icon_back, R.id.left_back);
61   - button1.setOnClickListener(new View.OnClickListener() {
  60 + binding.topbar.addLeftImageButton(R.drawable.icon_back, R.id.left_back).setOnClickListener(new View.OnClickListener() {
62 61 @Override
63 62 public void onClick(View view) {
64 63 }
65 64 });
66 65 //添加设备按钮
67   - button = binding.topbar.addRightImageButton(R.drawable.icon_item_add, R.id.right_add);
68   - button.setOnClickListener(new View.OnClickListener() {
  66 + addButton = binding.topbar.addRightImageButton(R.drawable.icon_item_add, R.id.right_add);
  67 + addButton.setOnClickListener(new View.OnClickListener() {
69 68 @Override
70 69 public void onClick(View view) {
71   -// BlueToothStep1Activity.startActivity(getActivity());
72   - AddClick();
  70 + if (null!=getMvpView()){
  71 + getMvpView().showPop(addButton);
  72 + }
73 73 }
74 74 });
  75 +
75 76 }
76 77 }
77 78  
78   - private void AddClick() {
79   - List<PopMenuInfo> popMenuInfoList = new ArrayList<>();
80   - PopMenuInfo popMenuInfo = new PopMenuInfo();
81   - popMenuInfo.setTitle("下载中");
82   -// popMenuInfo.setNetImag("zsdfs");
83   - popMenuInfoList.add(popMenuInfo);
84   - popMenuInfo = new PopMenuInfo();
85   - popMenuInfo.setTitle("历史记录");
86   -// popMenuInfo.setNetImag("zsdfs");
87   - popMenuInfoList.add(popMenuInfo);
88   - popMenuInfo = new PopMenuInfo();
89   - popMenuInfo.setTitle("设备管理");
90   -// popMenuInfo.setNetImag("zsdfs");
91   - popMenuInfoList.add(popMenuInfo);
92   -
93   - PopMenu mPopMenu = new PopMenu.Builder(getActivity())
94   - .addData(popMenuInfoList)
95   - .setBackgroundColorArray(new int[]{Color.parseColor("#363636"), Color.parseColor("#BF000000"), Color.parseColor("#BF000000")})
96   - .setLeftAndRightMargin(20)
97   - .setTopMargin(20)
98   - .setLineColor(R.color.white_50)
99   - .setTextColor(R.color.white)
100   - .setLineVisible(View.VISIBLE)
101   -// .setArrowHeight(30f)
102   -// .setArrowHeight(30f)
103   - //.setCancelable(false)
104   - .setCornerRadius(10f)
105   - .build();
106   - mPopMenu.show(button);
107   - }
108 79 }
... ...
module_xiaojiaSoundBox/src/main/java/com/cnlive/strike/xiaojiaspeaker/ui/widget/popmenu/PopMenu.java
... ... @@ -15,6 +15,7 @@ import android.support.annotation.NonNull;
15 15 import android.support.v7.widget.LinearLayoutManager;
16 16 import android.support.v7.widget.RecyclerView;
17 17 import android.util.DisplayMetrics;
  18 +import android.util.Log;
18 19 import android.view.Gravity;
19 20 import android.view.View;
20 21 import android.view.ViewGroup;
... ... @@ -51,12 +52,11 @@ public final class PopMenu {
51 52 private int mBackgroundColor;
52 53 private RecyclerView mRecyclerView;
53 54  
54   - private PopMenu.OnItemClickListener mItemClickListener;
  55 + private OnItemClickListener mItemClickListener;
55 56 private PopMenuAdapter mAdapter;
56 57 private List<PopMenuInfo> mData = new ArrayList<>();
57 58 private String TAG = "PopMenu";
58 59 private Builder builder;
59   - private OnItemClickListener onItemClickListener;
60 60  
61 61 public void setmItemClickListener(OnItemClickListener mItemClickListener) {
62 62 this.mItemClickListener = mItemClickListener;
... ... @@ -130,8 +130,8 @@ public final class PopMenu {
130 130 mAdapter.setOnItemClickListener(new PopMenuAdapter.OnItemClickListener() {
131 131 @Override
132 132 public void onClick(int position, PopMenuInfo popMenuInfo) {
133   - if (null != onItemClickListener) {
134   - onItemClickListener.onClick(position, popMenuInfo);
  133 + if (null != mItemClickListener) {
  134 + mItemClickListener.onClick(position, popMenuInfo);
135 135 }
136 136 dismiss();
137 137 }
... ...
module_xiaojiaSoundBox/src/main/res/layout/pop_item_menu.xml
... ... @@ -3,7 +3,7 @@
3 3  
4 4 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
5 5 android:id="@+id/ll_root"
6   - android:layout_width="wrap_content"
  6 + android:layout_width="match_parent"
7 7 android:layout_height="wrap_content"
8 8 android:background="@drawable/selectable_pop_item_background"
9 9 android:clickable="true"
... ...