Convert ArrayList to String array in Android

123,364

Solution 1

Use the method "toArray()"

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
Object[] mStringArray = mStringList.toArray();

for(int i = 0; i < mStringArray.length ; i++){
    Log.d("string is",(String)mStringArray[i]);
}

or you can do it like this: (mentioned in other answers)

ArrayList<String>  mStringList= new ArrayList<String>();
mStringList.add("ann");
mStringList.add("john");
String[] mStringArray = new String[mStringList.size()];
mStringArray = mStringList.toArray(mStringArray);

for(int i = 0; i < mStringArray.length ; i++){
    Log.d("string is",(String)mStringArray[i]);
}

http://developer.android.com/reference/java/util/ArrayList.html#toArray()

Solution 2

Well in general:

List<String> names = new ArrayList<String>();
names.add("john");
names.add("ann");

String[] namesArr = new String[names.size()];
for (int i = 0; i < names.size(); i++) {
    namesArr[i] = names.get(i);  
}

Or better yet, using built in:

List<String> names = new ArrayList<String>();
String[] namesArr = names.toArray(new String[names.size()]);

Solution 3

String[] array = new String[items2.size()];
items2.toArray(array);

Solution 4

I know im very late to answer this. But it will help others, I was also stucked on this.

Here is what i did to get it work.

String[] namesArr = (String[]) names.toArray(new String[names.size()]);

Solution 5

try this

List<String> list = new ArrayList<String>();
list.add("List1");
list.add("List2");

String[] listArr = new String[list.size()];
listArr = list.toArray(listArr );

for(String s : listArr )
    System.out.println(s);
Share:
123,364
Parth Doshi
Author by

Parth Doshi

IT under graduate, having a deep interest in Android development. Love working on web services and XML-RPC. Started off with Android 3 months back, now learning Microsoft Technologies like .NET and ASP.NET MVC Email: [email protected]

Updated on July 09, 2022

Comments

  • Parth Doshi
    Parth Doshi almost 2 years

    I have a ArrayList that contains values in the form [ann,john]. I want to convert this ArrayList into a String array in the form {"ann","john"}.

    How should I do this?

    My Android code:

         final Button markabsent = (Button) findViewById(R.id.Button02);
          markabsent.setOnClickListener(new View.OnClickListener() {
              public void onClick(View v) {
    
                // Perform action on click
                 Toast.makeText(display.this,"You have marked the students absent",Toast.LENGTH_SHORT).show();
    
                 SparseBooleanArray checkedabsent = lView.getCheckedItemPositions();
    
    
    
                for (int i = 0; i < arr2.length; i++) 
                {
                    if (checkedabsent.get(i)) 
                    {
                        items2.add(arr2[i]);
                        System.out.println(items2);
    
                    }
                }
    
                Log.d("", "items:");
                for (String string : items2)
                {
                    Log.d("string is", string);
    
    
                }  
              }
          });  
    

    My Logcat:

         11-10 21:44:00.414: INFO/System.out(2316): [ann, john, ann]
         11-10 21:44:00.414: DEBUG/(2316): items:
         11-10 21:44:00.414: DEBUG/string is(2316): ann
         11-10 21:44:00.414: DEBUG/string is(2316): john
    

    I tried doing everything mentioned in the answers but my logcat just doesn't seem to imrove

    Here is the one giving exceptions:

              11-10 22:14:20.855: INFO/System.out(3322): [Ljava.lang.String;@44eb6ff0
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411): FATAL EXCEPTION: main
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411): java.lang.ClassCastException: [Ljava.lang.Object;
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.java:124)
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.view.View.performClick(View.java:2408)
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.view.View$PerformClick.run(View.java:8816)
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at android.os.Handler.handleCallback(Handler.java:587)
    

    Here is one more:

              11-10 22:14:20.875: DEBUG/string is(3322): ann
              11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
              11-10 22:14:20.875: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
              11-10 22:14:20.885: INFO/System.out(3322): [Ljava.lang.String;@44eb7720
              11-10 22:14:20.895: DEBUG/string is(3322): john
              11-10 22:14:20.895: INFO/System.out(3322): [Ljava.lang.String;@44eb7de8
              11-10 22:16:38.186: ERROR/AndroidRuntime(3411):     at com.example.display$2.onClick(display.java:124)