我正在尝试为视图生成随机 ID,如下面的屏幕截图所示。但它没有用。它为空。我应该如何 findViewById ?
问问题
15592 次
6 回答
15
textView.setId(View.generateViewId())
API 17 中引入的用法。
于 2017-01-04T04:07:54.317 回答
2
TextView tv = new TextView(this);
这意味着您正在动态创建 TextView。所以你不需要这样做findViewById
。
findViewById
当带有 id 的视图存在于 xml 文件中时使用。
删除TextView cloneTextView = (TextView) findViewById(randomNo)
线。你的问题很模糊,我试着解释一下。
于 2014-08-05T11:57:08.463 回答
1
唯一标识符的最佳实践
爪哇
String uniqueID = UUID.randomUUID().toString();
科特林
var uniqueID = UUID.randomUUID().toString()
于 2021-08-05T08:42:18.423 回答
0
我有自己的解决方案...应该是这样的..
Random r = new Random();
randomNo = r.nextInt(1000+1);
TextView textView = new TextView(this);
textView.setId(randomNo);
linearLayout.addView(textView);
int childCount = linearLayout.getChildCount();
for(int i=0;i<childCount;i++){
if(linearLayout.getChildAt(i).getId()==randomNo){
TextView cloneTextView = (TextView) linearLayout.getChildAt(i);
cloneTextView.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
cloneTextView.setText("I'm a clone...!");
linearLayout.removeAllViews();
linearLayout.addView(cloneTextView);
}
}
它有效,这就是我想要的。谢谢你们。
于 2014-08-06T03:38:28.373 回答
0
这样的事情可能会奏效。
但我不确定可能的性能和内存问题,因为它会返回一个视图实例(如果找到)。在一个小的测试序列中,它从来没有碰到一个现有的 id,换句话说,第一个随机数总是没问题的。
private int createUniqueId() {
int id = RandomUtils.nextInt();
while(findViewById(id) != null) {
//id is not unique, try another one...
id = RandomUtils.nextInt();
}
//return unique id
return id;
}
于 2014-11-04T22:58:19.390 回答
0
您可以按如下方式创建 UUID(通用唯一标识符):
String id= UUID.randomUUID().toString();
于 2019-02-24T10:02:51.803 回答