我正在尝试为视图生成随机ID,如下面的屏幕截图所示。 但它没有用。它没有了。 我应该如何找到ViewById?
答案 0 :(得分:3)
使用API 17中引入的textView.setId(View.generateViewId())
。
答案 1 :(得分:1)
TextView tv = new TextView(this);
这意味着您正在动态创建TextView。所以你不需要做findViewById
。
当带有id的视图存在于xml文件中时,将使用findViewById
。
删除TextView cloneTextView = (TextView) findViewById(randomNo)
行。你的问题很模糊,我试着解释一下。
答案 2 :(得分: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);
}
}
它有效,这就是我想要的。谢谢大家。
答案 3 :(得分: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;
}
答案 4 :(得分:0)
您可以如下创建UUID(通用唯一标识符):
String id= UUID.randomUUID().toString();
答案 5 :(得分:0)
唯一标识符的最佳做法
Java
String uniqueID = UUID.randomUUID().toString();
科特林
var uniqueID = UUID.randomUUID().toString()