2012-09-11 25 views
-6

我有下面的代码:从列表基于添加或删除一个字符串的if语句

if(cb.isChecked()) 
    { 
selectedPlanets.add(planet.getDisplayName()); 
    } 

if (!cb.isChecked()) 
    { 
selectedPlanets.remove(planet.getDisplayName()); 
    } 
testing(); 
} 

private void testing() { 
      serverString.setText(null); 
       Iterator<String>i = selectedPlanets.iterator(); 
       while(i.hasNext()){ 
       String aNum1 = i.next(); 
       serverString.append(aNum1+","); 
       } 

然后我需要通过selectedPlanets迭代,但去掉那些露了出来。通过再次将TextView设置为空,如果选择了三个或更多,它将起作用。但是,如果选择了两个,则检查的行星也会从列表中移除。

编辑:对谁运行到这个问题的人,我解决它通过使用其他(程序员的拦网让我失去了意义!),然后执行,我需要使它工作的一些其他方法。

+8

为什么你应该检查一样,当它的确切oposite添加其他替代 –

+0

@droidhot请看到我的编辑 – fasheikh

+0

我不不明白为什么所有的降价...什么可能看起来简单的一个人是不是我 – fasheikh

回答

1

为什么不能做到这一点:

for(int i=0; i<selectedPlanet.size(); i++) { 
    if(planet.isChecked()) { 
     selectedPlanets.add(planet.getDisplayName()); 
    } else { 
     selectedPlanets.remove(planet.getDisplayName()); 
    } 
} 
+0

请参阅我的编辑 – fasheikh

+0

你想遍历集合,看看每个项目是否被检查? – iTurki

+0

是的请,那是我需要做的 – fasheikh

2

为什么你不这样做呢?

if (cb.isChecked()) { 
    selectedPlanets.add(planet.getDisplayName()); 
} else { 
    selectedPlanets.remove(planet.getDisplayName()); 
} 
+0

好吧,你是对的,他应该这样写,但你不觉得,这将是一个问题的解决方案,它只是一种方法来最小化/优化代码,所以它不应该只是一个评论。 – jeet

1

你所要做的是 如果isChecked为true,则添加的东西

if(cb.isChecked()) 
    { 
selectedPlanets.add(planet.getDisplayName()); 
    } 

如果isChecked是不是真的那么删除东西

if (!cb.isChecked()) 
    { 
selectedPlanets.remove(planet.getDisplayName()); 
    } 

而不是使用不正确的条件的,必须使用其他情况下,像

if(cb.isChecked()) { 
    selectedPlanets.add(planet.getDisplayName()); 
} else { 
    selectedPlanets.remove(planet.getDisplayName()); 
}