大家好(如果我的英语不好对不起), 我必须在学校编码一个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'在执行中改变它的值,你永远无法通过多个属性进行比较。 –