andrew
andrew

Reputation: 23

Android ArrayList of int

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

Upvotes: 1

Views: 1114

Answers (4)

Dentor
Dentor

Reputation: 600

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.

Upvotes: 0

Swaminathan V
Swaminathan V

Reputation: 4781

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..

Upvotes: 0

hifromantal
hifromantal

Reputation: 1764

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++;
    }

Upvotes: 1

Anjali
Anjali

Reputation: 2535

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

    }

Upvotes: 0

Related Questions