0

我是 android 的初学者,正在开发我的第一个应用程序。我选择了一个使用 google Places api 的教程并完成了它。之后我决定添加一个按钮,可以从结果中随机选择一家餐厅。该应用程序运行,我没有收到任何错误,在我的银河选项卡 2 上进行测试。但是,当我单击应用程序上的随机按钮时,显示的只是列表中的第一家餐厅。任何帮助深表感谢。

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

3 回答 3

1

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

但是,Random 非常简单(即使您不必要地以毫秒为单位对其进行播种??)并且看起来还不错。

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

使用调试器进入并打印出在每次按钮单击时选择的随机索引,以便您验证它。

于 2013-05-16T18:12:31.120 回答
0

您是否必须触发对 ListView 的单击?为什么不直接使用地点数据nearPlaces.results.get(r)并调用startActivity()它呢?

于 2013-05-16T18:10:30.533 回答
0

尝试使用SecureRandom而不是您现在使用的 Random。也不需要播种。请注意,如果您的时间卡住了(模拟器、电池没电等),那么Random每次通话都会在同一时间播种电流。

于 2013-05-16T18:14:48.823 回答