2013-10-04 64 views
-8

誰能告訴我什麼是錯我的代碼ArrayList的奇怪行爲

latest_songs,top_songs和hit_songs被arraylist.song()是的parseURL一個靜態的方法,其中我獲取JSON array.it做工精細&返回正確的數據。

latest_Songs = ParseUrl.song(url1); 
     Log.i("ring,latest=", latest_Songs.toString()); 
    top_Songs = ParseUrl.song(url2); 
     Log.i("ring,top=", top_Songs.toString()); 
    hit_Songs = ParseUrl.song(url3); 
     Log.i("ring,hits=", hit_Songs.toString()); 

當我運行latest_songs和top_songs.problem是hit_songs.as我寫這在我的項目中兩個的ArrayList(latest_songs和top_songs)與hits_songs.where我做錯overrided數據,它工作正常。

這是從我在每一個ArrayList中

public class ParseUrl { 
static ArrayList<String> songs_List = new ArrayList<String>(); 
static ArrayList<String> songs_Names = new ArrayList<String>(); 
static ArrayList<String> songs_Urls = new ArrayList<String>(); 

static File tempFiles; 
File ringtones; 

public static ArrayList<String> song(String url) { 
    songs_Names.clear(); 
    songs_Urls.clear(); 
    JSONObject json = JsonParse.getSongfromUrl(url); 

    try { 
     JSONArray latestSongs = json.getJSONArray("ringtones"); 
     for (int count = 0; count < latestSongs.length(); count++) { 
      JSONObject song = latestSongs.getJSONObject(count); 
      songs_List.add(song.toString()); 
      JSONArray name = song.names(); 
      songs_Names.add(name.toString()); 
      String songUrl = name.toString(); 
      String URL = songUrl.substring(2, songUrl.lastIndexOf("\"")); 
      songs_Urls.add(song.getString(URL)); 
     } 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 

    return songs_Names; 

} 
+1

在哪裏可以得到其餘的歌曲我的意思是代碼? –

+3

所以我們必須猜測代碼,你是怎麼寫的? –

+2

我不確定我是否有能力爲您提供答案...... – MadProgrammer

回答

0

你的arraylist是你類中的一個靜態變量。所以在內存中只有一個數組列表。每次你調用歌曲方法時,你正在修改同一個列表。這意味着你的最新動畫,頂級動畫,hit_songs,都將是指向相同的列表。這就是你的列表越來越多的原因。 嘗試在你的方法內部創建一個列表並返回它而不是去尋找靜態變量。

+0

:我試過..仍然不工作 – gbl

+0

你可以顯示代碼? – Renjith

+0

:我已經改變了代碼,現在正在工作,非常感謝你。 – gbl

0

你隨時隨地改變url值檢索數據的parseURL? 因爲您將ParseUrl.song(url)分配給所有三個數組列表。除非url在某處發生更改,否則所有三個數組列表將具有相同的值,因爲ParseUrl.song(url)會給出相同的結果。

+0

:是的,我爲everey解析使用不同的網址。 – gbl

+0

:當我刪除hits_songs = ParseUrl.song(url3)。它正常工作。 – gbl

+0

我們需要其餘的代碼。這沒有幫助 – Aneesh