如何在android中随机编程生成id?

时间:2014-08-05 11:51:33

标签: android android-view android-identifiers

我正在尝试为视图生成随机ID,如下面的屏幕截图所示。 但它没有用。它没有了。 我应该如何找到ViewById?

enter image description here

6 个答案:

答案 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()