我正在开发一个应用程序,在其中动态添加 View 并使用分配唯一的 id,但它返回负值:
long time = System.currentTimeMillis();
view.setId((int)time);
所以我在谷歌上搜索并找到了另一个解决方案,但它也不起作用。它还返回负值:
Long time = System.currentTimeMillis();
view.setId(time.intValue());
那么如何安全地将 System.currentTimeMills()
返回的 long 值转换为 int
呢?
System.currentTimeMills()
返回 1505645107314
,而转换为 int
返回 -1888413582
。
最佳答案
当一个大的long
值被转换为int
时,该值将会改变。您可能需要将时间除以 1000 以获得以秒为单位的时间,或者从 1 天前的时间中减去该值(取决于您喜欢的唯一性)并将其用作 View 的 id。
view.setId((int)(time/1000)); //this gives unique id for every second.
编辑 使用以下代码获取每毫秒的唯一 ID:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
long yesterday = calendar.getTimeInMillis();
int uniqueId = (int) (yesterday - System.currentTimeMillis());
关于java - System.currentTimeMillis() 转 int 返回负值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46263300/