Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将随机字符串从另一个数组添加到ArrayList_Java_Android - Fatal编程技术网

Java 将随机字符串从另一个数组添加到ArrayList

Java 将随机字符串从另一个数组添加到ArrayList,java,android,Java,Android,试图用随机字符串填充我的ListView,但每次我单击按钮时,都会用相同的值填充相同的字符串。像狗,狗,狗 有人能给我一个提示吗 public class MainActivity extends ListActivity { ArrayList list1 = new ArrayList(); String[] list2 = {"Bubbles", "Goldie", "Dog", "Fins", "Dory"}; ArrayAdapter

试图用随机字符串填充我的
ListView
,但每次我单击按钮时,都会用相同的值填充相同的字符串。像

有人能给我一个提示吗

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);
    }
}
调用
OnCreate()
时,将分配
randomNum

randomNum = rand.nextInt(list2.length);
它在运行时不会更改

改变

list1.add(list2[randomNum]);


你的问题就在这里

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)]

您已将随机数生成放在
onCreate()
方法中

如果希望在每次单击按钮时生成新的随机索引,则需要将其放在
onClickListener
中:

@Override
public void onClick(View v) {
    list1.add(list2[rand.nextInt(list2.length)]);
    adapter.notifyDataSetChanged();
}

调试,调试,调试。一步一步地运行调试好的,看看调用的是什么,以什么顺序调用。
@Override
public void onClick(View v) {
    list1.add(list2[rand.nextInt(list2.length)]);
    adapter.notifyDataSetChanged();
}