如何使用web服务在android中创建条形图?
如何在android中创建条形图 注意:- 但是我需要使用web服务中的x轴和y轴值。 这意味着web服务将显示x轴和y轴值。到那时,我需要使用这些值作为x轴和y轴值来创建条形图 如何做到这一点?请提出建议 LOGCAT如何使用web服务在android中创建条形图?,android,web-services,bar-chart,Android,Web Services,Bar Chart,如何在android中创建条形图 注意:- 但是我需要使用web服务中的x轴和y轴值。 这意味着web服务将显示x轴和y轴值。到那时,我需要使用这些值作为x轴和y轴值来创建条形图 如何做到这一点?请提出建议 LOGCAT 09-21 15:09:53.103: D/AndroidRuntime(271): Shutting down VM 09-21 15:09:53.103: W/dalvikvm(271): threadid=1: thread exiting with uncaught e
09-21 15:09:53.103: D/AndroidRuntime(271): Shutting down VM
09-21 15:09:53.103: W/dalvikvm(271): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
09-21 15:09:53.114: E/AndroidRuntime(271): FATAL EXCEPTION: main
09-21 15:09:53.114: E/AndroidRuntime(271): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.xmlparsing_test/com.example.xmlparsing_test.BarGraphActivity}: java.lang.NullPointerException
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread.access$2300(ActivityThread.java:125)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.os.Handler.dispatchMessage(Handler.java:99)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.os.Looper.loop(Looper.java:123)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread.main(ActivityThread.java:4627)
09-21 15:09:53.114: E/AndroidRuntime(271): at java.lang.reflect.Method.invokeNative(Native Method)
09-21 15:09:53.114: E/AndroidRuntime(271): at java.lang.reflect.Method.invoke(Method.java:521)
09-21 15:09:53.114: E/AndroidRuntime(271): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
09-21 15:09:53.114: E/AndroidRuntime(271): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
09-21 15:09:53.114: E/AndroidRuntime(271): at dalvik.system.NativeStart.main(Native Method)
09-21 15:09:53.114: E/AndroidRuntime(271): Caused by: java.lang.NullPointerException
09-21 15:09:53.114: E/AndroidRuntime(271): at com.example.xmlparsing_test.BarGraphActivity.buildBarDataset(BarGraphActivity.java:115)
09-21 15:09:53.114: E/AndroidRuntime(271): at com.example.xmlparsing_test.BarGraphActivity.DrawGraph(BarGraphActivity.java:57)
09-21 15:09:53.114: E/AndroidRuntime(271): at com.example.xmlparsing_test.BarGraphActivity.onCreate(BarGraphActivity.java:22)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
09-21 15:09:53.114: E/AndroidRuntime(271): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
09-21 15:09:53.114: E/AndroidRuntime(271): ... 11 more
09-21 15:10:04.033: I/Process(271): Sending signal. PID: 271 SIG: 9
chart.java
public class Chart extends Activity
{
EditText edt1,edt2;
TextView txtv1;
Button btn;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1 = (EditText)findViewById(R.id.editText1);
edt2 = (EditText)findViewById(R.id.editText2);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
getTMSChart(edt1.getText().toString(),edt2.getText().toString());
Intent intnt = new Intent(v.getContext(), BarGraphActivity.class);
startActivity(intnt);
}
});
}
public void getTMSChart(String FromDate, String ToDate)
{
System.setProperty("http.keepAlive", "false");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
String METHOD = "GetTMSChart";
String NAMESPACE = "http://tempuri.org/";
String SOAP_ACTION = "http://tempuri.org/GetTMSChart";
String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
SoapObject request = new SoapObject(NAMESPACE, METHOD);
request.addProperty("FromDate","");
request.addProperty("ToDate","");
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject root = (SoapObject) ((SoapObject)(result).getProperty(0)).getProperty("NewDataSet");
int tablesCount = root.getPropertyCount();
for (int i = 0; i < tablesCount; i++)
{
SoapObject table = (SoapObject) root.getProperty(i);
int propertyCount = table.getPropertyCount();
for (int j = 0; j < propertyCount; j++)
{
//String ord = table.getPropertyAsString("");
int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));
}
}
}
catch (Exception e)
{}
} }
public class BarGraphActivity extends Chart
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
DrawGraph();
}
Chart ch = new Chart();
public void DrawGraph()
{
String[] titles = new String[] { " Barcharts",""};
int[] x_axis =null;
int[] y_axis =null;
List<int[]> values = new ArrayList<int[]>();
values.add(x_axis);
values.add(y_axis);
int[] colors = new int[] { Color.WHITE, Color.BLACK};
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
renderer.setOrientation(Orientation.HORIZONTAL);
setChartSettings(renderer, "some texts", " ", " ",0,x_axis, 0,y_axis, Color.GRAY, Color.LTGRAY);
renderer.setXLabels(1);
renderer.addXTextLabel(2, "orderNo");
renderer.addYTextLabel(2, "freight");
renderer.setPanEnabled(false, false);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i);
seriesRenderer.setDisplayChartValues(true);
}
ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
public XYMultipleSeriesRenderer buildBarRenderer(int[] colors)
{
// creates a SeriesRenderer and initializes it with useful default values as well as colors
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(15);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
public void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,String yTitle, int xMin, int[] x_axis, int yMin, int[] y_axis, int axesColor,int labelsColor)
{
// sets lots of default values for this renderer
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setYAxisMin(yMin);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.BLACK);
}
public XYMultipleSeriesDataset buildBarDataset(String[] titles, List<int[]> values)
{
// adds the axis titles and values into the dataset
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++)
{
CategorySeries series = new CategorySeries(titles[i]);
int[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
} }
公共类图表扩展活动
{
编辑文本edt1、edt2;
TextView-txtv1;
按钮btn;
@凌驾
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1=(EditText)findViewById(R.id.editText1);
edt2=(EditText)findViewById(R.id.editText2);
btn=(按钮)findViewById(R.id.button1);
btn.setOnClickListener(新视图.OnClickListener()
{
公共void onClick(视图v)
{
gettmchart(edt1.getText().toString(),edt2.getText().toString());
Intent intnt=新的Intent(v.getContext(),BarGraphActivity.class);
星触觉(intnt);
}
});
}
public void gettmchart(字符串FromDate,字符串ToDate)
{
System.setProperty(“http.keepAlive”,“false”);
SoapSerializationEnvelope=新的SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet=true;
String METHOD=“GetTMSChart”;
字符串命名空间=”http://tempuri.org/";
字符串SOAP_ACTION=”http://tempuri.org/GetTMSChart";
字符串URL=”http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
SoapObject请求=新的SoapObject(名称空间、方法);
request.addProperty(“FromDate”,即“”);
request.addProperty(“ToDate”和“”);
envelope.setOutputSoapObject(请求);
HttpTransportSE androidHttpTransport=新的HttpTransportSE(URL);
尝试
{
调用(SOAP_操作,信封);
SoapObject结果=(SoapObject)envelope.bodyIn;
SoapObject根=(SoapObject)((SoapObject)(结果).getProperty(0)).getProperty(“NewDataSet”);
int tableCount=root.getPropertyCount();
for(int i=0;i
BarGraphActivity.java
public class Chart extends Activity
{
EditText edt1,edt2;
TextView txtv1;
Button btn;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
edt1 = (EditText)findViewById(R.id.editText1);
edt2 = (EditText)findViewById(R.id.editText2);
btn = (Button)findViewById(R.id.button1);
btn.setOnClickListener(new View.OnClickListener()
{
public void onClick(View v)
{
getTMSChart(edt1.getText().toString(),edt2.getText().toString());
Intent intnt = new Intent(v.getContext(), BarGraphActivity.class);
startActivity(intnt);
}
});
}
public void getTMSChart(String FromDate, String ToDate)
{
System.setProperty("http.keepAlive", "false");
SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
envelope.dotNet = true;
String METHOD = "GetTMSChart";
String NAMESPACE = "http://tempuri.org/";
String SOAP_ACTION = "http://tempuri.org/GetTMSChart";
String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
SoapObject request = new SoapObject(NAMESPACE, METHOD);
request.addProperty("FromDate","");
request.addProperty("ToDate","");
envelope.setOutputSoapObject(request);
HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);
try
{
androidHttpTransport.call(SOAP_ACTION, envelope);
SoapObject result = (SoapObject) envelope.bodyIn;
SoapObject root = (SoapObject) ((SoapObject)(result).getProperty(0)).getProperty("NewDataSet");
int tablesCount = root.getPropertyCount();
for (int i = 0; i < tablesCount; i++)
{
SoapObject table = (SoapObject) root.getProperty(i);
int propertyCount = table.getPropertyCount();
for (int j = 0; j < propertyCount; j++)
{
//String ord = table.getPropertyAsString("");
int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));
}
}
}
catch (Exception e)
{}
} }
public class BarGraphActivity extends Chart
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
DrawGraph();
}
Chart ch = new Chart();
public void DrawGraph()
{
String[] titles = new String[] { " Barcharts",""};
int[] x_axis =null;
int[] y_axis =null;
List<int[]> values = new ArrayList<int[]>();
values.add(x_axis);
values.add(y_axis);
int[] colors = new int[] { Color.WHITE, Color.BLACK};
XYMultipleSeriesRenderer renderer = buildBarRenderer(colors);
renderer.setOrientation(Orientation.HORIZONTAL);
setChartSettings(renderer, "some texts", " ", " ",0,x_axis, 0,y_axis, Color.GRAY, Color.LTGRAY);
renderer.setXLabels(1);
renderer.addXTextLabel(2, "orderNo");
renderer.addYTextLabel(2, "freight");
renderer.setPanEnabled(false, false);
int length = renderer.getSeriesRendererCount();
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer seriesRenderer = renderer.getSeriesRendererAt(i);
seriesRenderer.setDisplayChartValues(true);
}
ChartFactory.getBarChartIntent(this, buildBarDataset(titles, values), renderer,Type.DEFAULT);
}
public XYMultipleSeriesRenderer buildBarRenderer(int[] colors)
{
// creates a SeriesRenderer and initializes it with useful default values as well as colors
XYMultipleSeriesRenderer renderer = new XYMultipleSeriesRenderer();
renderer.setAxisTitleTextSize(15);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(15);
renderer.setLegendTextSize(15);
int length = colors.length;
for (int i = 0; i < length; i++)
{
SimpleSeriesRenderer r = new SimpleSeriesRenderer();
r.setColor(colors[i]);
renderer.addSeriesRenderer(r);
}
return renderer;
}
public void setChartSettings(XYMultipleSeriesRenderer renderer, String title, String xTitle,String yTitle, int xMin, int[] x_axis, int yMin, int[] y_axis, int axesColor,int labelsColor)
{
// sets lots of default values for this renderer
renderer.setChartTitle(title);
renderer.setXTitle(xTitle);
renderer.setYTitle(yTitle);
renderer.setXAxisMin(xMin);
renderer.setYAxisMin(yMin);
renderer.setAxesColor(axesColor);
renderer.setLabelsColor(labelsColor);
renderer.setApplyBackgroundColor(true);
renderer.setBackgroundColor(Color.BLACK);
}
public XYMultipleSeriesDataset buildBarDataset(String[] titles, List<int[]> values)
{
// adds the axis titles and values into the dataset
XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
int length = titles.length;
for (int i = 0; i < length; i++)
{
CategorySeries series = new CategorySeries(titles[i]);
int[] v = values.get(i);
int seriesLength = v.length;
for (int k = 0; k < seriesLength; k++)
{
series.add(v[k]);
}
dataset.addSeries(series.toXYSeries());
}
return dataset;
} }
公共类BarGraphActivity扩展图表
{
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main1);
绘图();
}
图表ch=新图表();
public void DrawGraph()
{
String[]titles=新字符串[]{“条形图”,“”};
int[]x_轴=空;
int[]y_轴=空;
列表值=新的ArrayList();
值。添加(x_轴);
值。添加(y_轴);
int[]colors=newint[]{Color.WHITE,Color.BLACK};
XYMultipleReseriesRenderer渲染器=构建渲染器(颜色);
渲染器.setOrientation(方向.水平);
setChartSettings(渲染器,“某些文本”、“0”、“0、x_轴、0、y_轴、Color.GRAY、Color.LTGRAY);
setXLabels(1);
addxtLabel(2,“订单号”);
2.addYTextLabel(2,“运费”);
renderer.setPanEnabled(false,false);
int length=renderer.getSeriesRenderCount();
for(int i=0;i
谢谢你宝贵的时间 1-从web服务获取值 这实际上与条形图无关。只需调用web服务并获取所需的值 2-获得值后,可以使用创建条形图 编辑: 在阅读你的更新后,这里是我的一般想法 在
chart.java中