|
|
@@ -30,6 +30,7 @@ import org.json.JSONArray;
|
|
|
import org.json.JSONException;
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
+import java.io.Serializable;
|
|
|
import java.util.ArrayList;
|
|
|
|
|
|
/**
|
|
|
@@ -38,15 +39,18 @@ import java.util.ArrayList;
|
|
|
public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
|
|
|
|
|
|
- private class KPIModel {
|
|
|
+ private static class KPIModel implements Serializable {
|
|
|
|
|
|
+ private static final long serialVersionUID = -6280156291692980527L;
|
|
|
ArrayList<PieChartView.ChartItem> items;
|
|
|
String name;
|
|
|
int total;
|
|
|
|
|
|
}
|
|
|
|
|
|
- private class Month {
|
|
|
+ private static class Month implements Serializable {
|
|
|
+
|
|
|
+ private static final long serialVersionUID = -1567922292260033377L;
|
|
|
String shipVal;
|
|
|
int shipColor = Color.WHITE;
|
|
|
|
|
|
@@ -97,7 +101,6 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
JSONObject mData;
|
|
|
ArrayList<KPIModel> mKPIArr = new ArrayList<>();
|
|
|
Month mMonthModel;
|
|
|
- PieChartView chartView; // 用于ChartItem对象创建
|
|
|
SwipeRefreshLayout mSwipeRefresh;
|
|
|
ProgressBar mLoadIndicator;
|
|
|
private KPIFragment self;
|
|
|
@@ -128,13 +131,20 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
mContext = getContext();
|
|
|
self = this;
|
|
|
|
|
|
+ if (savedInstanceState != null) {
|
|
|
+ currentKPI = savedInstanceState.getInt("currentKPI");
|
|
|
+ mKPIArr = (ArrayList<KPIModel>) savedInstanceState.getSerializable("KPIData");
|
|
|
+ mMonthModel = (Month) savedInstanceState.getSerializable("KPIMonth");
|
|
|
+ if (mKPIArr != null) {
|
|
|
+ totalKPI = mKPIArr.size();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getContext());
|
|
|
IntentFilter intentFilter = new IntentFilter("com.apex.broadcast.person_mode");
|
|
|
mReceiver = new KPIBroadcastReceiver();
|
|
|
localBroadcastManager.registerReceiver(mReceiver,intentFilter);
|
|
|
|
|
|
- chartView = new PieChartView(mContext);
|
|
|
-
|
|
|
mLoadIndicator = root.findViewById(R.id.loadKPI_indicator);
|
|
|
mSwipeRefresh = root.findViewById(R.id.kpi_swipe_refresh);
|
|
|
mSwipeRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
|
|
|
@@ -206,9 +216,14 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
// }
|
|
|
// }
|
|
|
//
|
|
|
-// if (mKPIArr == null || mKPIArr.size() == 0) {
|
|
|
-// loadKPIData();
|
|
|
-// }
|
|
|
+
|
|
|
+ if (mKPIArr != null && mKPIArr.size() > 0) {
|
|
|
+ int display_index = currentKPI;
|
|
|
+ mKPIPager.setCurrentItem(display_index,false);
|
|
|
+ }
|
|
|
+ if (mKPIArr == null || mKPIArr.size() == 0) {
|
|
|
+ loadKPIData();
|
|
|
+ }
|
|
|
|
|
|
return root;
|
|
|
}
|
|
|
@@ -261,10 +276,16 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
@Override
|
|
|
public void onSaveInstanceState(Bundle outState) {
|
|
|
super.onSaveInstanceState(outState);
|
|
|
- if (mData != null) {
|
|
|
- outState.putString("KPIData",mData.toString());
|
|
|
- outState.putInt("currentKPI",currentKPI);
|
|
|
+
|
|
|
+ if (mKPIArr != null) {
|
|
|
+ outState.putSerializable("KPIData",mKPIArr);
|
|
|
+ }
|
|
|
+ if (mMonthModel != null) {
|
|
|
+ outState.putSerializable("KPIMonth",mMonthModel);
|
|
|
}
|
|
|
+ outState.putInt("currentKPI",currentKPI);
|
|
|
+
|
|
|
+
|
|
|
// mKPIArr.clear();
|
|
|
// mAdapter.notifyDataSetChanged();
|
|
|
}
|
|
|
@@ -272,22 +293,15 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
@Override
|
|
|
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
|
|
|
super.onViewStateRestored(savedInstanceState);
|
|
|
- if (savedInstanceState != null) {
|
|
|
- currentKPI = savedInstanceState.getInt("currentKPI");
|
|
|
- String kpiString = savedInstanceState.getString("KPIData");
|
|
|
- if (kpiString != null) {
|
|
|
- try {
|
|
|
- mData = new JSONObject(kpiString);
|
|
|
- prepareData();
|
|
|
- } catch (JSONException e) {
|
|
|
- e.printStackTrace();
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (mKPIArr == null || mKPIArr.size() == 0) {
|
|
|
- loadKPIData();
|
|
|
- }
|
|
|
+// if (savedInstanceState != null) {
|
|
|
+// currentKPI = savedInstanceState.getInt("currentKPI");
|
|
|
+// mKPIArr = (ArrayList<KPIModel>) savedInstanceState.getSerializable("KPIData");
|
|
|
+// mMonthModel = (Month) savedInstanceState.getSerializable("KPIMonth");
|
|
|
+// }
|
|
|
+//
|
|
|
+// if (mKPIArr == null || mKPIArr.size() == 0) {
|
|
|
+// loadKPIData();
|
|
|
+// }
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
@@ -379,6 +393,9 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
JSONArray kpiArray = mData.optJSONArray("KPI");
|
|
|
|
|
|
if (kpiArray != null) {
|
|
|
+ if (mKPIArr == null) {
|
|
|
+ mKPIArr = new ArrayList<>();
|
|
|
+ }
|
|
|
mKPIArr.clear();
|
|
|
currentKPI = 1;
|
|
|
for (int i = 0; i < kpiArray.length(); i++) {
|
|
|
@@ -396,7 +413,7 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
for (int j = 0; j < jsonArr.length(); j++) {
|
|
|
JSONObject item = jsonArr.optJSONObject(j);
|
|
|
if (item != null) {
|
|
|
- PieChartView.ChartItem itm = chartView.new ChartItem();
|
|
|
+ PieChartView.ChartItem itm = new PieChartView.ChartItem();
|
|
|
itm.value = Integer.valueOf(item.optString("A_val"));
|
|
|
itm.title = item.optString("full_title");
|
|
|
String color_str = item.optString("color");
|
|
|
@@ -424,7 +441,8 @@ public class KPIFragment extends Fragment implements KPICell.KPIListener {
|
|
|
}
|
|
|
mAdapter.notifyDataSetChanged();
|
|
|
if (mKPIArr != null && mKPIArr.size() > 0) {
|
|
|
- mKPIPager.setCurrentItem(currentKPI,false);
|
|
|
+ int display_index = currentKPI;
|
|
|
+ mKPIPager.setCurrentItem(display_index,false);
|
|
|
}
|
|
|
}
|
|
|
|