生成数组的随机索引

时间:2013-05-16 18:05:19

标签: java android random

我是android的初学者,正在开发我的第一个应用程序。我选择了使用google Places api的教程并完成了它。后来我决定要添加一个按钮,从结果中随机选择一家餐馆。应用程序运行并且我没有错误,在我的galaxy选项卡2上进行测试。但是,当我单击应用程序上的Random按钮时,显示的所有内容都是列表中的第一个餐厅。非常感谢任何帮助。

btnGetRand = (Button) findViewById(R.id.btn_get_rand);

    btnGetRand.setOnClickListener(new View.OnClickListener() {

        public void onClick(View arg0) { 
            Time t = new Time();
            t.setToNow();
            Random randomGenerator = new Random(t.toMillis(false));
            int count = nearPlaces.results.size();
            int r = randomGenerator.nextInt(count);
            int id = nearPlaces.results.indexOf(r);
            lv.performItemClick(lv, r, id);             
        }
    }); 

    lv.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,
                int position, long id) {
            String reference = ((TextView) view.findViewById(R.id.reference))
                               .getText().toString();

            Intent in = new Intent(getApplicationContext(),
                    SinglePlaceActivity.class);
            in.putExtra(KEY_REFERENCE, reference);
            startActivity(in);
        }
    });

3 个答案:

答案 0 :(得分:1)

看看这段代码,你不可能说你的随机逻辑是错误的还是你的代码显示错误。

然而,Random是非常简单的(即使你不必要地用毫秒时间播种它) - 看起来还不错。

我的猜测是你没有正确使用API​​。

使用调试器进入并打印出随机按钮单击所选的随机索引,以便进行验证。

答案 1 :(得分:0)

您是否必须触发ListView上的单击?为什么不使用nearPlaces.results.get(r)获取地点数据,只需在其上调用startActivity()

答案 2 :(得分:0)

尝试使用SecureRandom代替您现在使用的随机数。也不需要种下它。请注意,如果您的时间停滞不前(模拟器,电池耗尽,无论如何),那么当前Random将在每次通话时播放相同的时间。