2013-03-07 23 views
42

Uygulamamda, arraylistimi bir dizinin bir dizesine dönüştürmem gerekiyor. listofurls = (String[])image_urls.toArray();ClassCastException: java.lang.Object [] java.lang.String [] android için kullanılamaz. [] Android

Bu tam kodudur:

public class Test2 extends AsyncTask<Void, Void, Void> 
{ 
    String[] listofurls ; 
    private static final String url = "http://www.tts.com/album_pro/array_to_encode"; 
    JSONParser jParser = new JSONParser(); 
    ArrayList<String> image_urls = new ArrayList<String>(); 

    protected void onPreExecute() { 
    //Log.e(LOG_CLASS, "in side assyntask"); 
    } 

    protected Void doInBackground(Void... voids) { 
    Log.v("Async","Async"); 
    JSONObject json = jParser.getJSONFromUrl(url); 

    try { 
     JSONObject seo = json.getJSONObject("SEO"); 
     JSONArray folio = seo.getJSONArray("Folio"); 

     // JSONArray image_urls1 = new JSONArray(); 
     //String s1=seo.getString("Folio"); 

     for(int i=0;i<folio.length();++i) { 
     String m = folio.getString(i); 
     Log.v("M"+i,m); 
     image_urls.add(m); 
     Log("test-url"+image_urls); 
     } 
    } catch(Exception e) { 
     e.printStackTrace(); 
    } 

    listofurls = (String[])image_urls.toArray(); //ERROR OCCURS HERE 

    return null; 
    } 

    private void Log(String string) { 
    Log.v("Test",string); 
    } 

    protected void onProgressUpdate(Integer... progress) { } 

    protected void onPostExecute(Void result) { 
    mAdapter = new ImagePagerAdapter(getSupportFragmentManager(),listofurls.length); 
    mAdapter.setImageurls(listofurls); 
    mPager.setAdapter(mAdapter); 
    } 
+0

@MiserableVariable Daha iyi ifade, evet .. –

+0

aslında anlamı ters, ama sen noktası olsun :) –

cevap

90

listofurls = image_urls.toArray(new String[image_urls.size()]); 
deneyin listofurls hatasını alıyorum doğrultusunda başta

ClassCastException: java.lang.Object[] cannot be cast to java.lang.String[] android 

: Ancak, ben bir hata alıyorum

Not: listofurları arrayOfURLs

olarak yeniden adlandırmanızı öneririm
+0

hala hata alıyorum diyor, Neden: java.lang.ClassCastException: java.lang.Object [] olamaz java.lang.String [] – Shweta

+0

'a çevirmek demek istediniz: String [] listofurls; listofurls = image_urls.toArray (yeni String [image_urls.size()]); "listofurls" yerine "arrayOFURLs" kullanmalıyım ?? ama bu sorunu nasıl denemek ve yerelleştirmek öneririz bir fark nasıl – Shweta

+0

yapar, bunu deneyin: Liste image_urls = new ArrayList (); String [] listofurls = image_urls.toArray (yeni String [image_urls.size()]); –

2

bu deneyin:

doğrudan buradan Alınan
ArrayList<String> stock_list = new ArrayList<String>(); 
stock_list.add("stock1"); 
stock_list.add("stock2"); 
String[] stockArr = new String[stock_list.size()]; 
stockArr = stock_list.toArray(stockArr); 
for(String s : stockArr) 
    System.out.println(s); 

: ama o şekilde değil, yukarıda da belirtildiği gibi link

24

Sen toArray kullanmalıdır.

ya da birinci dizi başlatmak ve dolgu: urlArrayimage_urls tüm dizeleri ihtiva ya da sıfır uzunlukta bir dize dizisine geçecek

String[] urlArray = new String[image_urls.size()]; 
image_urls.toArray(urlArray); 

, ve bundan sonra:

listofurls = (String[]) image_urls.toArray(new String[0]); 

See toArray() için belgeler.

+0

Diğer çözümler benim için çalışmadı. 0 uzunluk dizisini geçmek işe yaradı. – mythicalcoder

3

Arraylist içeriğini bir dizide almanız yeterlidir, doğru mu?

Bundan hoşlanamaz mı? Eğer çıkan dizinin boyutunu bilmiyorum bile tüm durumlar için hile yapmak gerekir

 for(int i=0;i<folio.length();++i) 
     { 
      String m = folio.getString(i); 
      Log.v("M"+i,m); 
      image_urls.add(m); 
      Log("test-url"+image_urls); 


      listofurls[i] = m ; 
     } 
0
listofurls = image_urls.toArray(new String[0]); 

.

İlgili konular