2014-11-05 45 views
3

我想输入3个数据来自3个EditText字段,它将要显示为条形图。如何将字符串值转换为整数数组列表 - Android

这是我的代码部分。给我一个这些错误的解决方案..

我试图让这个条形图使用这段代码。但它不起作用。我评论//错误点

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.getfromdb); 

    final String[] mMonth = new String[] { 
      "Jan", "Feb" , "Mar", "Apr", "May", "Jun", 
      "Jul", "Aug" , "Sep", "Oct", "Nov", "Dec" 
     }; 

    final EditText t1 =(EditText)findViewById(R.id.textView1); 
    final EditText t2 =(EditText)findViewById(R.id.textView2); 
    final EditText t3 =(EditText)findViewById(R.id.textView3); 


    Button btnChart = (Button) findViewById(R.id.btnView); 

    int x1 = Integer.parseInt(t1.getText().toString()); 
    int x2 = Integer.parseInt(t2.getText().toString()); 
    int x3 = Integer.parseInt(t3.getText().toString()); 

    btnChart.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       openChart(); 

      } 
       private void openChart() { 

        int x1 = Integer.parseInt(t1.getText().toString()); 
        int x2 = Integer.parseInt(t2.getText().toString()); 
        int x3 = Integer.parseInt(t3.getText().toString()); 

       int[] x = { 0,1,2 }; 
       int [] income = {x1 ,x2, x3}; //ERROR POINT 


       XYSeries incomeSeries = new XYSeries("Pulse Rate");     
       XYSeries expenseSeries = new XYSeries(""); 

       for(int i=0;i<x.length;i++){    
        incomeSeries.add(i,income[i]); 

       } 

       XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset(); 
       dataset.addSeries(incomeSeries); 
       dataset.addSeries(expenseSeries);  


       XYSeriesRenderer incomeRenderer = new XYSeriesRenderer(); 
       incomeRenderer.setColor(Color.rgb(130, 130, 230)); 
       incomeRenderer.setFillPoints(true); 
       incomeRenderer.setLineWidth(2); 
       incomeRenderer.setDisplayChartValues(true); 


       XYSeriesRenderer expenseRenderer = new XYSeriesRenderer(); 
       expenseRenderer.setColor(Color.rgb(220, 80, 80)); 
       expenseRenderer.setFillPoints(true); 
       expenseRenderer.setLineWidth(2); 
       expenseRenderer.setDisplayChartValues(true);   


       XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer(); 
       multiRenderer.setXLabels(0); 
       multiRenderer.setChartTitle("Pulse Chart"); 
       multiRenderer.setXTitle("Pulse rate"); 
       multiRenderer.setYTitle("Days"); 
       multiRenderer.setZoomButtonsVisible(true);    
       for(int i=0; i< x.length;i++){ 
        multiRenderer.addXTextLabel(i, mMonth[i]);   
       }  

       multiRenderer.addSeriesRenderer(incomeRenderer); 
       multiRenderer.addSeriesRenderer(expenseRenderer); 

       Intent intent = ChartFactory.getBarChartIntent(getBaseContext(), dataset, multiRenderer, Type.DEFAULT); 

       startActivity(intent); 

      } 
     }); 

} 

private void setListAdapter(SimpleCursorAdapter adapter) { 
    // TODO Auto-generated method stub 

} 

我评论代码段中的//错误点。 当我给的值这点作为

int [] income = {60 ,40, 50};    //It should Be working 

那么就应该工作。但是我希望把这些值使用的EditText框。

+0

您是否收到错误消息? – 2014-11-05 06:04:26

+0

以Integer []收入并尝试。 – 2014-11-05 06:04:32

+0

你确定你在编辑文本中输入t1.getText()。toString()后的价值 – Deepzz 2014-11-05 06:06:41

回答

3

尝试这一行

int x1 = Integer.parseInt(t1.getText().toString()); 
+1

thank你这么多 – 2014-11-09 06:31:41

1

正如在评论中提到的,采取整数收入数组: Integer [] income = {x1,x2,x3};

比你可以使用Arrays.asList(收入)

+0

告诉我如何实现arrays.asList(收入) – 2014-11-05 06:39:20

+0

您不需要实现,asList是java.util包中的Arrays类的Utility方法。 – 2014-11-05 08:39:16

+0

请使用我的代码解释 – 2014-11-05 09:47:15

1
final EditText t1 =(EditText)findViewById(R.id.textView1); 
final EditText t2 =(EditText)findViewById(R.id.textView2); 
final EditText t3 =(EditText)findViewById(R.id.textView3); 

ArrayList<Integer> integersList = new ArrayList<Integer>(); 
integersList.add(Integer.parseInt(t1.getText().toString())); 
integersList.add(Integer.parseInt(t2.getText().toString())); 
integersList.add(Integer.parseInt(t3.getText().toString())); 
+0

这不起作用。我把整个代码。请给我一个解决方案 – 2014-11-05 07:16:14

+0

您确定您从EditText正确获取值吗?你有没有尝试过将Log放置到x1,x2,x3的值是否符合预期?您的for循环也使用x而不是收入数组来检查长度,看看它是否存在问题。 – Kirtan 2014-11-05 09:48:58

1

更改openChart方法如下:

private void openChart() { 
    int x1 = Integer.parseInt(t1.getText().toString()); 
    int x2 = Integer.parseInt(t2.getText().toString()); 
    int x3 = Integer.parseInt(t3.getText().toString()); 

    int[] income = {x1 ,x2, x3}; 

} 
+0

这不起作用。我把整个代码。请给我一个解决方案 – 2014-11-05 07:16:35

+0

你得到什么错误? – 2014-11-05 09:34:37

+0

没有错误。它将不会运行 – 2014-11-05 09:47:48

1

,如果你想从整数转换成整数,那么你应该写代码如

int x1 = Integer.parseInt(t1.getText().toString()).getIntValue(); 

然后用int值某处

2

尝试将此repalcing

int x1 = Integer.parseInt(t1.getText().toString()).getIntValue(); 
+2

非常感谢 – 2014-11-09 06:19:49

1

只需更换您的验证码

int x1 = Integer.parseInt(t1.getText().toString()); 
int x2 = Integer.parseInt(t2.getText().toString()); 
int x3 = Integer.parseInt(t3.getText().toString()); 

形式此

   int x1 = Integer.parseInt(t1.getText().toString()).getIntValue();; 
       int x2 = Integer.parseInt(t2.getText().toString()).getIntValue();; 
       int x3 = Integer.parseInt(t3.getText().toString()).getIntValue();; 
相关问题