如果我想从固定的爱好列表中选择某个项目作为示例,该怎么办?我们假设我从整个列表中选择(游泳)和(D& D)。
在里面我想检查一下他选择了什么......!我会这样做:for (String hobby : selectedHobbiesList)
{
if (hobby.equals("Swimming"))
{
return 2;
}
else if (hobby.equals("D&D"))
{
return 1;
}
else
{
return 0;
}
}
我想动态设置多个条件,我知道我可以只使用else if
进行所有的跳跃,但在我的情况下,我想要选择多少爱好的条件..!
是可能的,还是有解决方法。!
我认为我没有成功解释我的观点,对不起......!我用一个虚拟的例子问了这个问题,因为我遇到了处理问题(否则如果)..但我不知道如何应用建议的答案和我真正的问题..! 我将更清楚地解释它。
我正试图以兴趣爱好的方式对再循环视图中的arraylist项目进行重新排序。我举了两个爱好的例子,就像前面的例子一样。 但在我的情况下,业余爱好不是预设的..!他们可以达到8或没有! 所以我试着让“其他如果”这样动态:
// inside the activity class
if (homeData.size() > 0) {
Collections.sort(homeData,
Collections.reverseOrder(new SortedListAdapterCallback<HomeItemModel>(adapter) {
@Override
public int compare(HomeItemModel o1, HomeItemModel o2) {
if (Hawk.contains("Hobbies")) {
ArrayList<String> hobbiesList = Hawk.get("Hobbies");
for (String hobbyItem: hobbiesList ){
if (o1.getCategory().equals("Swimming") && item.equals("Swimming")) {
weight1 = 2;
} else if (o1.getCategory().equals("D&D") && item.equals("D&D")) {
weight1 = 1;
// I know must define all the 8 hobbies but I don't wanna make the code to long..
} else {
weight1 = 0;
}
if (o2.getCategory().equals("Swimming") && item.equals("Swimming")) {
weight2 = 2;
} else if (o2.getCategory().equals("D&D") && item.equals("D&D")) {
weight2 = 1;
} else {
weight2 = 0;
}
}
if (weight1 == weight2) {
return 0;
} else if (weight1 > weight2) {
return 1;
} else {
return -1;
}
}
return 0;
}
@Override
public boolean areContentsTheSame(HomeItemModel oldItem, HomeItemModel newItem) {
return false;
}
@Override
public boolean areItemsTheSame(HomeItemModel item1, HomeItemModel item2) {
return false;
}
}));
}
adapter.notifyDataSetChanged();
// code..
但这不起作用,它只识别其中一个条件,所以如果爱好arraylist包含{“游泳”,“D&amp; D”}它只对第一个进行排序,但之前当我手动进行时它是排序两个!
答案 0 :(得分:1)
使用HashMap:
HashMap map = new HashMap<String, Integer>(){
{
put("Other", 3);
put("Swimming", 2);
put("D&D", 1);
}
};
for (String hobby : selectedHobbiesList) {
if(map.containsKey(hobby)){
return map.get(hobby);
}else{
return 0;
}
}
<强>更新强>
为什么不在HomeItemModel中设置权重?
class HomeItemModel{
private int mWeight;
private String mCat;
HomeItemModel(String cat, int weight){
mWeight = weight;
mCat = cat;
}
public int getWeight(){
return mWeight;
}
public String getCategory(){
return mCat;
}
/*More code*/
}
比较
@Override
public int compare(HomeItemModel o1, HomeItemModel o2){
//DESC order
if(o1.getWeight() == o2.getWeight()){
return 0;
}else if(o1.getWeight() < o2.getWeight()){
return 1;
}else{
return -1;
}
}
添加数据:
homeData.add(new HomeItemModel("Swimming", 1));
homeData.add(new HomeItemModel("D&D", 2));
答案 1 :(得分:0)
据我所知,你想知道什么是选择。我会使用一个简单的switch-case语句:
for(String hobby : selectedHobbiesList) {
switch(hobby) {
case "Swimming":
// Do something here
break;
case "D&D":
// Do something here
break;
...
}