大家好(如果我的英語不好對不起), 我必須在學校編碼一個Android應用程序。 該項目涉及音樂播放器,我收到了一個音樂數組列表,我希望能夠按照不同標準(藝術家,標題和專輯)進行排序。我已經做了一些代碼,但它只適用於標題。我讓你下面我的代碼,我想按照按鈕修改typeTri,每個按鈕(藝術家,標題和專輯)上有一個clicklistener。感謝您的幫助如何根據不同的標準對數組列表進行排序?
@Override
public int compareTo(Musique a){
String typeTri = "Artistes";
if (typeTri.equals("Artistes")){
if (a.getArtiste().compareTo(this.getArtiste())>0)
return -1;
if (a.getArtiste().compareTo(this.getArtiste())<0)
return 1;
if (a.getArtiste().equals(this.getArtiste()))
return 0;
}
if (typeTri.equals("Albums")){
if (a.getAlbum().compareTo(this.getAlbum())>0)
return -1;
if (a.getAlbum().compareTo(this.getAlbum())<0)
return 1;
if (a.getAlbum().equals(this.getAlbum()))
return 0;
}
if (typeTri.equals("Titres")){
if (a.getTitre().compareTo(this.getTitre())>0)
return -1;
if (a.getTitre().compareTo(this.getTitre())<0)
return 1;
if (a.getTitre().equals(this.getTitre()))
return 0;
}
return 0;
}
你可以打電話給'return a.getArtiste()。compareTo(this.getArtiste());';這三種情況沒有必要。如果你想要倒序,只需交換'a'和'this'即可。 –
是的,但我希望能夠按照屏幕上按下的按鈕按藝術家,專輯和標題進行排序。 這裏我按藝術家排序,我想知道如何根據按鈕修改typeTri –
在這種情況下,您需要刪除'equals'情況,因爲您的'compareTo'實現一致(並且對於如果它不大或更小,它是相等的。因此,它將始終從其中一個條件分支返回。另外,如果沒有'typeTri'在執行中改變它的值,你永遠無法通過多個屬性進行比較。 –