gpt4 book ai didi

java - (高效)删除和添加 Array 或 ArrayList 中的值 - Android/Java

转载 作者:行者123 更新时间:2023-12-01 09:26:37 25 4
gpt4 key购买 nike

我正在做的练习有点困难。我基本上有 4 个按钮,如果选中了复选框,则必须隐藏其中一个。我不知道为什么,但我只是不知道如何做到这一点,我应该制作一个 arrayList 而不是数组并不断删除/添加值,还是有另一种方法来“隐藏”或不使用值?

希望我的解释比较清楚,先谢谢了! :)

这是MainActivity.java代码(不包括导入):

public class MainActivity extends AppCompatActivity {

String globalColor;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

setColor();
}

private int randomColor(int length){
return (int) Math.floor(Math.random()*length);
}

private void setColor(){
String [] colors = {"Green", "Blue", "Red", "Magenta"};

//ArrayList<String> colors = new ArrayList<String>();

int rndColor = randomColor(colors.length); //color name for text
int rndColor2 = randomColor(colors.length); //color for text color

if(rndColor2 == rndColor){
rndColor2 = randomColor(colors.length);
}

globalColor = colors[rndColor];

TextView v = (TextView) findViewById(R.id.color);
v.setText(colors[rndColor]);
v.setTextColor(Color.parseColor(colors[rndColor2]));
}

public void checkColor(View v){
Button b = (Button)v;
String buttonText = b.getText().toString();

TextView txtview = (TextView) findViewById(R.id.result);

if(buttonText.equals(globalColor)){
txtview.setText("Yaay");

setColor();
} else {
txtview.setText("Booo");

setColor();
}
}

private void hideMagenta(){
CheckBox checkbox = (CheckBox)findViewById(R.id.checkbox);

checkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked) {
if(isChecked){
//this is where my problem is; I want to remove magenta as an option
//is it better to do this with an arraylist and to remove and add magenta to the arraylist
//or is there a different, more efficient way
}
}
});
}
}

最佳答案

你有很多选择。您可以像您建议的那样使用 ArrayList,您可以将可用颜色列表传递给 setColor方法。也许你可以传递你不想使用的颜色,然后在随机时做 if(randomedColor == colorYouDontWant) then random again 。您甚至可以使用Map<String, Color>把所有的颜色放在那里,然后从这张 map 上删除它们,随机会很奇怪。或Map<String, Boolean>其中键是颜色,值是颜色是否可用(如果可用则为 true,否则为 false)。我建议使用ArrayList。

顺便说一句。这个 fragment :

if(rndColor2 == rndColor){
rndColor2 = randomColor(colors.length);
}

我知道您不希望颜色相同,但是如果再次随机会得到相同的结果怎么办?你应该这样做:

while(rndColor2 == rndColor)

关于java - (高效)删除和添加 Array 或 ArrayList 中的值 - Android/Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39779803/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com