我是Android新手,今天我觉得很有动力,所以我开始编写应用程序。
但现在我被卡住了......我有一个带有字符串的ArrayList。使用随机数生成器,我从此列表中获取一个String。 我真正想做的是避免重复弦乐。我想只看一次元素。
你能帮帮我吗?
这是我的MainActivity:
public class MainActivity extends AppCompatActivity {
private TextView welcomeText;
private TextView pokemons;
private TextView whatToDo;
private Button yesButton;
private Button noButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
final String[] pokemonok = {
"Pikachu",
"Charizard",
"Bulbasaur",
"Charmander",
"Squirtle",
"Caterpie",
"Metapod",
"Weedle",
"Rattata",
"Onix"
};
final List<String> list = new ArrayList<String>(pokemonok.length);
for (String s : pokemonok) {
list.add(s);
}
welcomeText = (TextView) findViewById(R.id.welcomeText);
pokemons = (TextView) findViewById(R.id.pokemons);
whatToDo = (TextView) findViewById(R.id.whatToDo);
//EditText answerText = (EditText) findViewById(R.id.answerText);
yesButton = (Button) findViewById(R.id.yesButton);
noButton = (Button) findViewById(R.id.noButton);
final String[] def = {"[ " + list.get(0) + " ]"};
pokemons.setText(def[0]);
View.OnClickListener igen = new View.OnClickListener() {
@Override
public void onClick(View view) {
Random r = new Random();
int szam = r.nextInt(pokemonok.length);
pokemons.setText(def[0] + "[ " + list.get(szam) + " ]");
def[0] = def[0] + "[ " + list.get(szam) + " ]";
}
};
yesButton.setOnClickListener(igen);
}
}
答案 0 :(得分:2)
如果要在访问后从列表中删除元素,可以调用
list.remove(i)
这将从列表中删除第i个元素。
答案 1 :(得分:1)
根据您设置随机数生成器的方式,您可以执行以下操作:
list.remove(randomNumber);
这应该从列表中删除该项目。
答案 2 :(得分:1)
如果要保留列表,可以使用另一个列表,每当从原始列表中读取对象时,将该元素添加到临时列表中。然后,每当您想要选择一个新的随机元素时,首先您必须检查该元素是否已经在临时列表中。如果是,则必须重新生成该过程。
List<String> tempList = new ArrayList<>();
tempList.add( // YOUR ELEMENT TO SAVE ON TEMP LIST // );
然后检查
if (tempList.contains(element)){
// your code to doing the process again
{
答案 3 :(得分:0)
如果您不想更改您的宠物小精灵字符串列表,那么您可以在班级中创建一个布尔数组,用于识别已经选择了哪个神奇宝贝:
private boolean[] pokemonPicked = new boolean[pokemonok.length];
您可以将clickListener方法更改为:
View.OnClickListener igen = new View.OnClickListener() {
@Override
public void onClick(View view) {
int r = new Random().nextInt(pokemonok.length);
while(pokemonPicked[r]){
r = new Random().nextInt(pokemonok.length);
}
pokemonPicked[r] = true;
int szam = r;
pokemons.setText(def[0] + "[ " + list.get(szam) + " ]");
def[0] = def[0] + "[ " + list.get(szam) + " ]";
}
};