-6

私は以下のコードを持っています:

  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 を再度 null に設定することで、3 つ以上が選択されている場合に機能します。ただし、2 つ選択すると、チェックした惑星もリストから削除されます。

編集:この問題に遭遇した人のために、elseを使用して解決し(プログラマーのブロックが意味を失いました!)、それを機能させるために必要な他の方法を実装しました。

4

3 に答える 3

2

なぜあなたはこのようにしないのですか?

if (cb.isChecked()) {
   selectedPlanets.add(planet.getDisplayName());
} else {
   selectedPlanets.remove(planet.getDisplayName());
}
于 2012-09-11T11:03:02.093 に答える
1

あなたがしようとしているのは、isChecked trueの場合、何かを追加することです

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

真でない場合isChecked は、何かを削除します

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

not true 条件を使用する代わりに、次のような else ケースを使用する必要があります

if(cb.isChecked()) {
    selectedPlanets.add(planet.getDisplayName()); 
} else {
   selectedPlanets.remove(planet.getDisplayName()); 
}
于 2012-09-11T11:11:35.363 に答える
1

なぜこれをしないのですか:

for(int i=0; i<selectedPlanet.size(); i++) {
    if(planet.isChecked()) {
        selectedPlanets.add(planet.getDisplayName()); 
    } else {
       selectedPlanets.remove(planet.getDisplayName()); 
    }
}
于 2012-09-11T11:04:12.653 に答える