0

i am trying to collect some values in int array,which are from the web service by consuming it.Here i am using SOAP method for the consumption.

when i am trying to collect the values in int array, i am unable to run the emulator.

How to overcome this error? Please find my source for reference.

Main_WB.java

 public class Main_WB extends Activity 
 {
EditText edt1,edt2;
TextView txt_1;
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());
    }     
    });
  }

 private void getTMSChart(String FromDate,String ToDate)
 {
     txt_1 = (TextView)findViewById(R.id.textView1);

     System.setProperty("http.keepAlive", "false");        
     SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);        

     envelope.dotNet = true;

     String NAMESPACE = "http://tempuri.org/";
     String URL = "http://54.251.60.177/TMSOrdersService/TMSDetails.asmx";
     String METHOD = "GetTMSChart";

     SoapObject request = new SoapObject(NAMESPACE, METHOD);        
     request.addProperty("FromDate", FromDate);               
     request.addProperty("ToDate", ToDate);

     envelope.setOutputSoapObject(request);
     HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);

     try 
     {
         androidHttpTransport.call(NAMESPACE + METHOD, 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 orderNo =  table.getPropertyAsString("Order_No");
    //  String freight =  table.getPropertyAsString("Freight_Rate");
    //  String percent =  table.getPropertyAsString("Margin_Percent");


       int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
       int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
       int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));

       int[] ord = new int[orderNo];
       int[] frei = new int[freightRate];
       int[] margin = new int[marginPercent];


     // whatever you do with these values

       txt_1.setText(ord);
       txt_1.setText(frei);
       txt_1.setText(margin);
          }                   
       }
    }   
    catch (Exception e) 
    {
    }   
    }    }
3
  • @VVS i am getting this (The method setText(CharSequence) in the type TextView is not applicable for the arguments (int[])) message,when i hover the curzor on the line txt_1.setText(ord); Commented Sep 25, 2012 at 12:08
  • what do you want to do? you can only set String to a TextView. You are trying to set an int array Commented Sep 25, 2012 at 12:10
  • @nandeesh i am trying to collect the values in int[] array,the values are from the webservice by consuming it.and i am trying to print those values in a single textview,how to do this? Commented Sep 25, 2012 at 12:13

2 Answers 2

1

It's a compilation error, and the error is quite self-explanatory:

The method setText(CharSequence) in the type TextView is not applicable for the arguments (int[])

This means that the argument of the method setText() must be of type CharSequence, but that you are calling it with an argument of type int[], which is not a CharSequence.

Transform the int[] arrays to Strings, and, as String implements CharSequence, pass the resulting String to setText(). For example:

txt_1.setText(Arrays.toString(ord));

Moreover, I don't really see the point of calling setText() with three different arguments on the same text field.

Sign up to request clarification or add additional context in comments.

Comments

0
   int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
   int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
   int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));

   int[] ord = new int[orderNo];
   int[] frei = new int[freightRate];
   int[] margin = new int[marginPercent];


 // whatever you do with these values

   txt_1.setText(ord);
   txt_1.setText(frei);
   txt_1.setText(margin);

What are you trying to do here? From looking at that piece of (useless) code it seem like you lack basic programming knowledge and should perhaps read some more tutorials.

That said I'm pointing out what you're actually doing there:

    int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));

Here you request the property "Order_No" as a string value and convert it into an int. So far so good.

    int[] ord = new int[orderNo];

Here you create an int-array with an amount of elements equal to orderNo. So if your orderNo is 12345 you create an int-array with 12345 elements. I don't think that is what you intended.

   txt_1.setText(ord);

Here you pass that huge (unintialized) int-array as a parameter to the setText method of txt_1. That method obviously wants a string value and not an int-array.

So what are you trying to do?

EDIT:

To answer your question regarding creating the int-array:

int[] ord = new int[propertyCount];
int[] frei = new int[propertyCount];
int[] margin = new int[propertyCount];

for (int j = 0; j < propertyCount; j++)
{           
    int orderNo = Integer.parseInt(table.getPropertyAsString("Order_No"));
    int freightRate = Integer.parseInt(table.getPropertyAsString("Freight_Rate"));
    int marginPercent = Integer.parseInt(table.getPropertyAsString("Margin_Percent"));

    ord[j] = orderNo;
    frei[j] = freightRate;
    margin[j] = marginPercent;

}                   

// process the arrays;

I assume that you want one array per table so I create the arrays outside the inner loop and fill them within the loop.

Afterwards you can process these arrays. Beware that the arrays are recreated for every table in the outer loop.

Hope that helps.

5 Comments

Actually i'm trying to collect the values in int array and then send it to next screen through intents
I don't see where you're using intents?
i didn't use intents yet,yet to use,but before that i need to know how to collect those values in int array...can you please tell me how to collect those values in int[] array?
I have an another doubt will i ask you?..please
@Android_user: Ask your question in a way that everybody (including me) can answer and benefit from it.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.