2017-06-09 37 views
1

Helly guys,Same ArrayList但是不同的對象順序

我對ArrayLists有一些疑問。我正在用Android Studio編寫一個Android應用程序(一種音樂播放器),因此我有一個MainActivity,第二個活動是關於當前歌曲和音樂服務的信息。

我現在的問題是,我給服務的歌曲列表,服務應播放,我給第二個活動通過DataHolder顯示歌曲的信息相同的列表。

但是這些清單並沒有相同的順序。有人能告訴我爲什麼以及如何解決這個問題?

這裏是一些代碼:

在這裏,我定義的ArrayList。我想要一個隨機順序,所以我有一次洗牌。在checkRunTimePermission中,列表被填充。

songList = new ArrayList<Song>(); 
     checkRunTimePermission(); 
     Collections.shuffle(songList); 

在這裏,我開始服務,併發送列表的服務,第2活動

public void pureRandomClick (Button pureRandomButton) { 
     pureRandomButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       bkgrSrv.setList(songList); 
       bkgrSrv.pureRandom(max, min); 
       DataHolder holder = (DataHolder) getApplicationContext(); 
       holder.setSongList(songList); 
       startActivity(new Intent(MainActivity.this, playScreen.class)); 
      } 
     }); 
    } 

這是我DataHolder類

public class DataHolder extends Application { 

    private ArrayList<Song> songList; 
    public ArrayList<Song> getSonglist() {return songList;} 
    public void setSongList (ArrayList<Song> data) {this.songList = data;} 

} 
+0

它看起來像缺少東西。 – xenteros

+1

您應該提供一個[最小示例](https://stackoverflow.com/help/mcve)。這對你來說是更多的工作,但你可能會在找到解決方案的同時幫助你更容易。 – baudsp

回答

0

你嘗試這個解決方案?

public void setSongList (ArrayList<Song> data) { 
    this.songList.addAll(data); 

} 
+0

ArrayList是一個順序列表。所以,插入和檢索順序是一樣的。 所以,把名單上你dataholder你可以嘗試使用中的addAll或您可以添加這樣的每一個元素: 公共無效setSongList(ArrayList的數據){ 爲(宋歌:數據) this.songList.add(歌曲); } –

+0

當我使用addAll時,應用程序崩潰。 –

+0

你只需要在之前實例化你的對象。 –

相關問題