有人可以告诉我我的代码有什么问题
latest_songs,top_songs和hit_songs是arraylist.song()是Parseurl中的一个静态方法,我在那里获取json数组。工作正常&返回适当的数据。
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一起工作时,它运行正常我在我的项目中写了这个,并且用hits_songs覆盖了arraylist(latest_songs和top_songs)数据。我做错了。
这是ParseUrl,我从每个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;
}
答案 0 :(得分:0)
您是否在任何地方更改url
值?
因为您要为所有三个数组列表分配ParseUrl.song(url)
。除非url
在某处更改,否则所有三个数组列表都将具有相同的值,因为ParseUrl.song(url)
将给出相同的结果。
答案 1 :(得分:0)
你的arraylist是你班级中的一个静态变量。所以你的内存中只有一个arraylist。每次调用song方法,你都在修改同一个列表。这意味着你的latest_songs,top_songs,hit_songs,都将指向到同一个名单。这就是你的名单越过骑行的原因。 尝试在方法中创建一个列表并返回它,而不是去寻找静态变量。