我有以下代码,以便根据项目名称对ListView项目进行排序:
case R.id.menu_order_name:
adapter.sort(new Comparator<Shop>() {
@Override
public int compare(Shop arg0, Shop arg1) {
return arg0.getName().compareTo(arg1.getName());
}
});
this.setListAdapter(adapter);
adapter.notifyDataSetChanged();
return true;
我有一个小问题,我也希望有一个ActionBar菜单选项来按难度排序:困难是简单,中等和困难。问题是,如果我使用相同的排序方法,它会通过简单,坚硬,中等的方式对它们进行排序......因为它们在字母表中。任何人都可以帮我设置它,以便将它们与实际难度级别进行比较,从易到难以及如何指定此顺序?
提前致谢!所有的帮助将不胜感激,因为我不知道。
答案 0 :(得分:1)
你希望你的比较器是这样的;
new Comparator<Shop>() {
@Override
public int compare(Shop arg0, Shop arg1) {
return nameToInt(arg0.getName())-nameToInt(arg1.getName());
}
private static int nameToInt(String name)
{
if(name.equals("easy"))
return 0;
if(name.equals("medium"))
return 1;
if(name.equals("hard"))
return 2;
return 3;
}
}
在您的对象中使用枚举来识别简单易用的内容可以使其更加清洁。
答案 1 :(得分:1)
由于@Robadob的帮助给了我一些想法,我终于通过难度修复了排序。
case R.id.menu_order_difficulty:
adapter.sort(new Comparator<Shop>() {
@Override
public int compare(Recipe arg0, Recipe arg1) {
return (difficulty(arg0.getDifficulty())-difficulty(arg1.getDifficulty()));
}
private int difficulty(String name)
{
if(name.equals("Easy"))
return 0;
else if (name.equals("Medium"))
return 1;
else if(name.equals("Hard"))
return 2;
return 0;
}
});
this.setListAdapter(adapter);
adapter.notifyDataSetChanged();
return true;
我想我会发布完整的答案,以防将来有人帮助。