基于随机值获取数组元素

时间:2015-02-15 22:08:07

标签: java android arrays random

假设我们有一个包含100个字符串的数组,您可以从R.string.xml获取它们。

private String lapi[]={"R.string.lapi0", "R.string.lapi1", "R.string.lapi2", "R.string.lapi3"..."R.string.lapi99};

我们还有一个TextView和一个按钮:

pelicula=(TextView)findViewById(R.id.lapicera);
btnElegir=(Button)findViewById(R.id.btnElegir);

我们希望当我们点击按钮时获取0到100之间的随机值:

int random=(int) Math.round(Math.random()*100);

问题:使用随机值所属的数组值编辑TextView的最简单方法是什么? 我想做的是这样的事情:

pelicula.setText(getResources().getString(lapi[random]));

这是我认为最有效的解决方案,但不起作用。

您是否知道是否有其他类似的工作?,无需使用开关。

对不起,如果我的英语不清楚。

提前致谢!

1 个答案:

答案 0 :(得分:2)

getString()期望资源ID,你只是给一个字符串(即使它“对应”相同的文本id,它只是一个字符串)。

您想要实现的目标可以使用getIdentifier()完成(您甚至不需要数组):

Random r = new Random();
...
int randomId = r.nextInt(100);
int resID = getResources().getIdentifier("lapi"+randomId, "string", getPackageName());
pelicula.setText(resID);

请注意,使用id检索资源会更有效,正如文档所述:

  

注意:不鼓励使用此功能。效率更高   按标识符而不是按名称检索资源。