尝试使用随机字符串填充ListView
,但每次点击按钮时,它都会使用相同的值填充相同的字符串。与Dog
,Dog
,Dog
...
任何人都可以给我一个暗示吗?
public class MainActivity extends ListActivity {
ArrayList list1 = new ArrayList();
String[] list2 = {"Bubbles", "Goldie",
"Dog", "Fins", "Dory"};
ArrayAdapter adapter;
int randomNum;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Random rand = new Random();
randomNum = rand.nextInt(list2.length);
Button add = (Button) findViewById(R.id.add_button);
Button delete = (Button) findViewById(R.id.delete_button);
adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, list1);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
list1.add(list2[randomNum]);
adapter.notifyDataSetChanged();
}
});
setListAdapter(adapter);
}
}
答案 0 :(得分:2)
调用OnCreate()
时,正在分配randomNum
:
randomNum = rand.nextInt(list2.length);
它在运行时不会改变。
更改
list1.add(list2[randomNum]);
到
list1.add(list2[rand.nextInt(list2.length)]);
答案 1 :(得分:1)
你的问题就在这里。
public void onClick(View v) {
list1.add(list2[randomNum]);
adapter.notifyDataSetChanged();
}
randomNum
永远不会随您当前的实施而改变。只有在创建活动时才会生成一个随机数。
您可以在randomNum = rand.nextInt(list2.length);
方法中添加onClick
,也可以list1.add(list2[rand.nextInt(list2.length)]);
答案 2 :(得分:0)
您已将随机数生成放在onCreate()
方法中。
如果您希望每次单击按钮时生成新的随机索引,则需要将其放在onClickListener
中:
@Override
public void onClick(View v) {
list1.add(list2[rand.nextInt(list2.length)]);
adapter.notifyDataSetChanged();
}