我是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);
}
});
答案 0 :(得分:1)
看看这段代码,你不可能说你的随机逻辑是错误的还是你的代码显示错误。
然而,Random是非常简单的(即使你不必要地用毫秒时间播种它) - 看起来还不错。
我的猜测是你没有正确使用API。
使用调试器进入并打印出随机按钮单击所选的随机索引,以便进行验证。
答案 1 :(得分:0)
您是否必须触发ListView上的单击?为什么不使用nearPlaces.results.get(r)
获取地点数据,只需在其上调用startActivity()
?
答案 2 :(得分:0)
尝试使用SecureRandom
代替您现在使用的随机数。也不需要种下它。请注意,如果您的时间停滞不前(模拟器,电池耗尽,无论如何),那么当前Random
将在每次通话时播放相同的时间。