从另一个Array向ArrayList添加随机String

时间:2016-01-07 19:30:48

标签: java android

尝试使用随机字符串填充ListView,但每次点击按钮时,它都会使用相同的值填充相同的字符串。与DogDogDog ...

一样

任何人都可以给我一个暗示吗?

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);
    }
}

3 个答案:

答案 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();
}