C# 如何使用截图显示API中的图表
我最近一直在开发一个应用程序,在这个应用程序中,我需要显示一名员工的统计数据,这些数据作为JSON数据从API中检索出来,然后显示为图表。我正在使用MP Android Chart和Volley来获取和显示数据 我一直在尝试我能找到的每一种方法,但我似乎无法让它工作,它要么使应用程序崩溃,要么不显示任何数据 我的问题:我的方法有什么问题C# 如何使用截图显示API中的图表,c#,android,asp.net-web-api,android-volley,mpandroidchart,C#,Android,Asp.net Web Api,Android Volley,Mpandroidchart,我最近一直在开发一个应用程序,在这个应用程序中,我需要显示一名员工的统计数据,这些数据作为JSON数据从API中检索出来,然后显示为图表。我正在使用MP Android Chart和Volley来获取和显示数据 我一直在尝试我能找到的每一种方法,但我似乎无法让它工作,它要么使应用程序崩溃,要么不显示任何数据 我的问题:我的方法有什么问题 public static String SalesURL = "http://-------------------------"
public static String SalesURL = "http://-------------------------";
public static final String Key_SalespersonID = "id";
public static final String Key_Year = "year";
private String id;
private String year;
private RequestQueue queue;
private BarChart chart;
BarData data;
BarEntry values;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sp_main);
chart = findViewById(R.id.chart);
XAxis xAxis = chart.getXAxis();
xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);
xAxis.setGranularity(1f);
xAxis.setGranularityEnabled(true);
YAxis rightAxis = chart.getAxisRight();
rightAxis.setEnabled(false);
queue = Volley.newRequestQueue(this);
DateFormat dateFormat = new SimpleDateFormat("yyyy");
Date date = new Date();
year = dateFormat.format(date);
salesid = "1";
load_data_from_server();
}
从服务器加载数据功能
private void load_data_from_server(){
Description description = new Description();
description.setText("Sales");
StringRequest request = new StringRequest(Request.Method.POST, SalesURL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
for(int i=0;i<jsonArray.length();i++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String Month = jsonObject.getString("Month").trim();
String InvoiceAmount = jsonObject.getString("Sales").trim();
ArrayList<BarEntry> entries = new ArrayList<>();
entries.add(new BarEntry(Float.parseFloat(InvoiceAmount), 0));
ArrayList<String> labels = new ArrayList<String>();
labels.add(Month.substring(0,3));
BarDataSet barDataSet = new BarDataSet(entries, "Sales");
barDataSet.setColor(Color.rgb(0,82,159));
data = new BarData((IBarDataSet) labels, barDataSet);
chart.setDescription(description);
chart.animateXY(2000, 2000);
chart.setData(data);
chart.notifyDataSetChanged();
chart.invalidate();
}
} catch (Exception e) {
Toast.makeText(SP_MainActivity.this,e.getMessage(), Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if(error != null){
Toast.makeText(getApplicationContext(), error.toString(), Toast.LENGTH_SHORT);
}
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<String, String>();
map.put(Key_SalespersonID, id);
map.put(Key_Year, year);
return map;
}
};
queue.add(request);
}
[
{
"Month":"January",
"Salesperson":1,
"Sales":"608.00"
},
{
"Month":"February",
"Salesperson":1,
"Sales":"109.20"
},
{
"Month":"March",
"Salesperson":1,
"Sales":"509.10"
}
]