只有一个数据,用柱状图最好不过了,同样也是显示5条数据。
效果图:
代码:
package com.officialcar.offcialvehicles.ui.statistics; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.github.mikephil.charting.charts.BarChart; import com.github.mikephil.charting.components.Legend; import com.github.mikephil.charting.components.XAxis; import com.github.mikephil.charting.components.YAxis; import com.github.mikephil.charting.data.BarData; import com.github.mikephil.charting.data.BarDataSet; import com.github.mikephil.charting.data.BarEntry; import com.github.mikephil.charting.interfaces.datasets.IBarDataSet; import com.google.gson.Gson; import com.officialcar.offcialvehicles.AppConfig; import com.officialcar.offcialvehicles.R; import com.officialcar.offcialvehicles.domian.User; import com.officialcar.offcialvehicles.domian.Youhao.YouhaoBean; import org.kymjs.kjframe.KJHttp; import org.kymjs.kjframe.http.HttpCallBack; import org.kymjs.kjframe.http.HttpConfig; import org.kymjs.kjframe.http.HttpParams; import java.util.ArrayList; import java.util.List; import java.util.Map; public class LichengActivity extends AppCompatActivity implements View.OnClickListener { HttpParams params; String qian_time; String date; String str; private User user; private BarChart mChart; //5.16 暂定为5条数据 private int page_data = 5; private int my_min = 0; private int km_num = 0; private String shang = "shang"; private String xia = "xia"; private List<Float> kmlist; private List<String> carNumList; private int kmSize; private int my_len; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_licheng_layout); mChart = (BarChart) findViewById(R.id.chart); TextView titlebar_text_title = (TextView) findViewById(R.id.titlebar_text_title); titlebar_text_title.setText("里程统计"); ImageView titlbar_img = (ImageView) findViewById(R.id.titlbar_img); titlbar_img.setOnClickListener(this); Button shangye_button = (Button) findViewById(R.id.shangye_button); shangye_button.setOnClickListener(this); Button xiaye_button = (Button) findViewById(R.id.xiaye_button); xiaye_button.setOnClickListener(this); user = User.getInstance1(); user.setListNull(); params = new HttpParams(); Intent intent = getIntent(); qian_time = intent.getStringExtra("QIAN_TIME"); date = intent.getStringExtra("DANG_TIME"); getData(); } /** * 获取到数据 */ public void getData() { HttpConfig httpConfig = new HttpConfig(); httpConfig.cacheTime = 0;//设置缓存时间 KJHttp http = new KJHttp(httpConfig); params.put("startoilWearCar_time", qian_time); params.put("endoilWearCar_time", date); params.put("carId", ""); params.put("car_num_arr", 0); params.put("className", "com.ycya.service.ReportService"); params.put("methodName", "queryOilWear1"); http.post(AppConfig.MY_URL, params, new HttpCallBack() { @Override public void onSuccess(Map<String, String> headers, byte[] t) { super.onSuccess(t); Log.e("tag", "onSuccess"); try { str = new String(t, "gbk"); Log.e("tag", "str:" + str); setUserList(str); } catch (Exception e) { Log.e("tag", "e:" + e); e.printStackTrace(); } } @Override public void onFailure(int errorNo, String strMsg) { super.onFailure(errorNo, strMsg); Log.e("tag", "errorNo:" + errorNo); Log.e("tag", "onFailure"); } }); } private void setUserList(String str){ Gson gson = new Gson(); YouhaoBean data = gson.fromJson(str, YouhaoBean.class); kmlist = data.getMapKm(); carNumList = data.getCarNum(); //往User里添加数据 int dataPage = 5; if (kmlist.size() < 5) { kmSize = kmlist.size() % 5; dataPage = kmSize; } Log.e("tag", "dataPage:" + dataPage); setBarChart(dataPage); } //取油耗最高值 给图表 public double getKmMax() { double kk = kmlist.get(0); for (int i = 1; i < kmlist.size(); i++) { if (kk < kmlist.get(i)) { kk = kmlist.get(i); } } return kk; } public void setBarChart(int datapage) { mChart.setDrawBarShadow(false); mChart.setDrawValueAboveBar(true); mChart.setDescription(""); mChart.setMaxVisibleValueCount((int) (getKmMax() + 100)); mChart.setPinchZoom(false); mChart.setDrawGridBackground(false); XAxis xAxis = mChart.getXAxis(); xAxis.setPosition(XAxis.XAxisPosition.BOTTOM); xAxis.setDrawGridLines(false); xAxis.setSpaceBetweenLabels(2); YAxis leftAxis = mChart.getAxisLeft(); leftAxis.setLabelCount(8, false); leftAxis.setPosition(YAxis.YAxisLabelPosition.OUTSIDE_CHART); leftAxis.setSpaceTop(15f); leftAxis.setAxisMinValue(0f); YAxis rightAxis = mChart.getAxisRight(); rightAxis.setDrawGridLines(false); rightAxis.setLabelCount(8, false); rightAxis.setSpaceTop(15f); rightAxis.setAxisMinValue(0f); Legend l = mChart.getLegend(); l.setPosition(Legend.LegendPosition.BELOW_CHART_LEFT); l.setForm(Legend.LegendForm.SQUARE); l.setFormSize(9f); l.setTextSize(11f); l.setXEntrySpace(4f); setData(datapage, xia); } private void setData(int count, String biaoshi) { mChart.animateXY(3000, 3000); ArrayList<String> xVals = new ArrayList<>(); for (int i = my_min; i < count; i++) { Log.e("tag", "my_min:" + my_min + ",count:" + count); xVals.add(carNumList.get(i)); } ArrayList<BarEntry> yVals1 = new ArrayList<>(); int len = page_data; if (biaoshi.equals(shang)) { if (my_len < 5) { km_num = km_num - 5 - my_len; } else { km_num = km_num - 10; } int currIndex = my_min + 5; if (currIndex >= kmlist.size()) { len = kmlist.size() % page_data; if (len == 0) { len = page_data; } } } if (count < 5) { len = count % 5; } Log.e("tag", "len:" + len); Log.e("tag", "km_num:" + km_num); for (int i = 0; i < len; i++) { float km = kmlist.get(km_num); km_num++; Log.e("tag", "km_num:" + km_num); if (km_num >= kmlist.size()) { len = kmlist.size() % page_data; Log.e("tag", "len:" + len); if (len == 0) { len = page_data; } } my_len = len; yVals1.add(new BarEntry(km, i)); } BarDataSet set1; set1 = new BarDataSet(yVals1, "里程"); set1.setBarSpacePercent(35f); set1.setColor(Color.parseColor("#709ed6")); ArrayList<IBarDataSet> dataSets = new ArrayList<>(); dataSets.add(set1); BarData data = new BarData(xVals, dataSets); data.setValueTextSize(10f); mChart.setData(data); mChart.invalidate(); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.titlbar_img: finish(); break; case R.id.shangye_button: if (my_min == 0) { Toast.makeText(getApplication(), "已经是第一页", Toast.LENGTH_SHORT).show(); break; } int my_min3 = my_min; my_min = my_min - 5; mChart.animateXY(3000, 3000); setData(my_min3, shang); mChart.invalidate(); break; case R.id.xiaye_button: my_min = my_min + 5; if (my_min >= kmlist.size()) { Toast.makeText(getApplication(), "已经是最后一页", Toast.LENGTH_SHORT).show(); my_min = my_min - 5; break; } int my_min2 = my_min + 5; if (my_min2 >= kmlist.size()) { my_min2 = kmlist.size(); } mChart.animateXY(3000, 3000); setData(my_min2, xia); mChart.invalidate(); break; } } }