開発しようとしているアプリケーションに問題があります。Android向けの音楽ゲームで、データはすべてiTunesから取得しています。
これは、データを取得する部分です。私は2つのリストを持っています:
- リスト カンゾーニ: サイズ 5、フィールド: previewUrl、artistName、trackName、artistViewUrl、artworkUrl100。
- リスト dieciCanzoni: サイズ 10、上記のリストの 10 個の要素を含める必要があります。
リストを埋めるコードは次のとおりです。
try
{
int randomLookupId;
JSONObject obj = getJSONObject(url);
JSONArray jsonArray = obj.getJSONArray("resultIds");
for(int i = 0; i < 10; i++)
{
canzoni.clear();
randomLookupId = new Random().nextInt(jsonArray.length());
JSONObject finalObj = getJSONObject("http://itunes.apple.com/lookup?id="+jsonArray.getString(randomLookupId));
JSONArray finalJsonArray = finalObj.getJSONArray("results");
JSONObject returnObj = finalJsonArray.getJSONObject(0);
canzoni.add(returnObj.getString("previewUrl"));
canzoni.add(returnObj.getString("artistName"));
canzoni.add(returnObj.getString("trackName"));
canzoni.add(returnObj.getString("artistViewUrl"));
canzoni.add(returnObj.getString("artworkUrl100"));
Canzone.dieciCanzoni.add(i, canzoni);
}
}
catch (JSONException ignored)
{
ignored.getCause();
}
catch (MalformedURLException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
情報の取得は非常にうまく機能しますが、1 つだけ問題があります。canzoni リストをクリアすると、dieciCanzoni リストもクリアされていることに気付きました。
そして、canzoni リストをクリアする行にコメントを付けると、dieciCanzoni リストには canzoni の最後の値のみが挿入され、以前に挿入された値も変更されます!
それを理解するのを手伝ってもらえますか?
皆さん、ありがとうございました!