1

I'm new with android and java, so I apologize if what I say is not entirely correct. In my application I'd like to convert an ArrayList to integer to increase each value with a +1. Please note the commented out part to understand where is my problem. I can't find the right way.. This is what I do for now:

public String mRequest(String mUrl, String mAuth, String mParam, String customerId, ArrayList filter) {

    InputStream mStreamResponse;
    String mString = null;

    try {

        URL obj = new URL(mUrl);
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("GET");
        con.setRequestProperty("Authorization", mAuth);
        con.setRequestProperty("X-Limit", String.valueOf(xLimit));
        con.setRequestProperty("X-Skip", String.valueOf(xSkip));
        con.setRequestProperty("X-Sort", "{\"created\":-1}");

        String parameters = null;

        System.out.println("Value of mParam -> " + mParam);

        if (mParam != null && customerId != null) {
            Log.e("ERROR", "Ricerca per parametro e customerId");
        } else if (mParam != null) {
            parameters = "\"number\":{\"$regex\":" + mParam + "}";
        } else if (customerId != null) {
            parameters = "\"customer.id\":{\"$eq\":" + "\"" + customerId + "\"" + "}";
        } else {
            parameters = "\"number\":{\"$regex\":\"\"}";
        }

        System.out.println("parameters");
        System.out.println(parameters);

        if (filter != null) {

            //convert ArrayList to Array
            Object[] mArray = filter.toArray();

            String filterGroup = mArray[0].toString() + ".id";
            System.out.println("Group selected -> " + filterGroup);

            for (int i = 1; i < mArray.length; i++) {
                System.out.println("Value -> " + mArray[i]);
            }

            String pFilter = null;

            for (int i = 1; i < mArray.length; i++) {

                /*
                 *
                 *  This is where I need to change value in
                 *  pos i with i + 1
                 * 
                 */


                switch (mArray[i].toString()) {
                    case "0":
                        mArray[i] = "1";
                        break;
                    case "1":
                        mArray[i] = "2";
                        break;
                    case "2":
                        mArray[i] = "3";
                        break;
                    case "3":
                        mArray[i] = "4";
                        break;
                    case "4":
                        mArray[i] = "5";
                        break;
                    case "5":
                        mArray[i] = "6";
                        break;
                    case "6":
                        mArray[i] = "7";
                        break;
                    case "7":
                        mArray[i] = "8";
                        break;
                    case "8":
                        mArray[i] = "9";
                        break;
                    case "9":
                        mArray[i] = "10";
                        break;
                    case "10":
                        mArray[i] = "11";
                        break;
                    case "11":
                        mArray[i] = "12";
                        break;
                    case "12":
                        mArray[i] = "13";
                        break;
                }

                if (mArray.length == 2){
                    pFilter = mArray[i].toString();
                } else {

                    if (mArray[i] != mArray[mArray.length - 1]) {

                        if (pFilter != null) {
                            pFilter = pFilter + mArray[i].toString() + ",";
                        } else {
                            pFilter = mArray[i].toString() + ",";
                        }

                    } else {
                        pFilter = pFilter + mArray[i].toString();
                    }
                }

            }

            String mFilter = "[" + pFilter + "]";
            System.out.println("Insert value in a string -> " + mFilter);

            String tempParam = null;
            if (filterGroup.equals("assignee")) {
                tempParam = "{\"$eq\":" + mFilter + "}";
            } else {
                tempParam = "{\"$in\":" + mFilter + "}";
            }

            //Override the value with the same filterGroup
            if (filterMap.containsKey(filterGroup)) {
                String toOverride = filterGroup;
                filterMap.remove(filterGroup);
                filterMap.put(toOverride, tempParam);
            } else {
                filterMap.put(filterGroup, tempParam);
            }

            //iterate
            for (Map.Entry<String, String> entry : filterMap.entrySet()) {

                switch (entry.getKey()) {
                    case "status.id":
                        status = "\"" + entry.getKey() + "\":" + entry.getValue();
                        break;
                    case "queue.id":
                        queues = "\"" + entry.getKey() + "\":" + entry.getValue();
                        break;
                    case "type.id":
                        types = "\"" + entry.getKey() + "\":" + entry.getValue();
                        break;
                    case "severity.id":
                        severities = "\"" + entry.getKey() + "\":" + entry.getValue();
                        break;

                    case "assignee.id":

                        mytickets = "\"" + entry.getKey() + "\":" + entry.getValue();
                        break;

                }

            }

            filterMapValues = parameters ;

            if (status != null) {
                filterMapValues += ", " + status;
            }

            if (queues != null) {
                filterMapValues += ", " + queues;
            }

            if (types != null) {
                filterMapValues += ", " + types;
            }

            if (severities != null) {
                filterMapValues += ", " + severities;
            }

            if (mytickets != null) {
                filterMapValues += ", " + mytickets;
            }

            String myFilter = "{" + filterMapValues + "}";
            System.out.println("myFilter -> " + myFilter);

            //setup request header
            con.setRequestProperty("X-Filter", myFilter);

        } else {

            String xFilter = "{\"status.id\":" + statusAll + ", \"queue.id\":" + queueAll + ", \"type.id\":" + typeAll + ", \"severity.id\":" + severityAll + "," + parameters + "}";
            con.setRequestProperty("X-Filter", xFilter);
            System.out.println("Reset all -> " + xFilter);

        }

        int responseCode = con.getResponseCode();
        System.out.println("\nSending 'GET' request to URL : " + mUrl);
        System.out.println("Response Code : " + responseCode);

        mStreamResponse = con.getInputStream();

        BufferedReader reader = new BufferedReader(new InputStreamReader(mStreamResponse));
        StringBuilder sb = new StringBuilder();

        String line = null;
        try {
            while ((line = reader.readLine()) != null) {
                sb.append(line).append('\n');
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                mStreamResponse.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }

        mString = sb.toString();

    } catch (Exception e) {

    }


    return mString;
}

How can I do?

Thanks in advance.

Edit I started the for loop in pos #1 because in pos #0 I save filterGroup value, and that's a String, I need to menage as int only values in pos > 0

3
  • do you want to insert the integers from 1 to .. n in mArray ? correct Commented Sep 15, 2016 at 6:31
  • Yes, please see my edit Commented Sep 15, 2016 at 6:36
  • check my answer Commented Sep 15, 2016 at 6:48

4 Answers 4

1

First off:

I'd like to convert an ArrayList to integer [...]

ArrayList<E> is a collection object with type E that can be any object or primitive. What you are really asking for is how to convert an ArrayList<String> (see that it is an ArrayList of type String) into an integer array. I can see you have already converted the ArrayList<String> into an Object[] (Object array that can hold both integers and Strings) using the following line in the example code given above:

Object[] mArray = filter.toArray();

Getting back to the original answer, this would do it:

    int[] mArray = new int[filter.size()];
    for (int i = 0; i < filter.size(); i++) {
        int value = Integer.parseInt(filter.get(i));
        mArray[i] = value++;
    }
Sign up to request clarification or add additional context in comments.

Comments

0

Your code is correct just change the for loop initial value to start from 0 rather than 1 like this:

    int tempValue = 0;
    for (int i = 0; i < mArray.length; i++) {
     {
    // increasing your mArray value 
    tempValue  = (Integer) mArray[i] + 1;
    mArray[i] = tempValue;


   //Rest of your code

    }

1 Comment

With this method I got this error on line tempValue = Integer.parseInt(mArray[i]) + 1; -> parseInt(java.lang.String) in Integer cannot be applied to (java.lang.Object)
0

Can you try this please.

Remove your switch case inside for and replace it with below. Hope you want something like this.

for(int i=0; i<mArray.length(); i++){
mArray[i] = i+1;
}

let me know..

Comments

0

Do follwoing

Step 1: Create a method

  private List<Integer> stringToIncrementedString(ArrayList<String> stringArrayList){
    List<Integer> arrayInt;
    arrayInt = new ArrayList<Integer>();
    for(int i=1 ;i<stringArrayList.size();i++)
        arrayInt.add(Integer.parseInt(stringArrayList.get(i))+1);

    return arrayInt;
}

Step 2 :Call this method from where you want.It will return the Arraylist with incremented value.

5 Comments

Ok, but I can't call this method, my ArrayList contains for example: pos[0] = "status", pos [1] = "0", pos[2] = "1" and I only need to cast value in pos > 0
ok I will change it according to your answer. Just give me few minutes
Is it always pos[0]= status?
Yes or another string but never a number or something I can cast as a number
then just call for loop from 1st position check the answer it is edited

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.