2012-05-18 23 views
5

Tôi đang cố gắng so sánh một mảng các số nguyên với các thẻ của các lần xem hình ảnh mà tôi đã tạo duy nhất.So sánh thẻ của một chế độ xem với một số nguyên

sử dụng dòng này:

if(grid[i][j] == buttons[k].getTag()){ 

Tôi biết im trên đường ray đúng, nhưng tôi không thể hình dung ra nếu tôi cần phải cast nó hoặc sử dụng một phương pháp. Tôi biết một câu hỏi đơn giản của nó, nhưng bất kỳ sự trợ giúp nào cũng sẽ được đánh giá rất cao, cảm ơn.

+0

Bạn đã đặt thẻ như thế nào? –

+1

Thông qua tập tin xml – Benny292

Trả lời

3

Tôi nghĩ rằng thẻ của bạn đúng hơn là một chuỗi so với số nguyên.

Nếu đó là trường hợp chuyển đổi Integer toString() của bạn và kiểm tra xem nó bằng().

10

Bạn phải chuyển đổi các nút [k] .getTag() thành số nguyên.

Làm điều này:

if(grid[i][j] == Integer.parseInt(buttons[k].getTag().toString())){ 
+1

Rất dễ dàng sửa chữa vấn đề của tôi, Cảm ơn! – Darrell

18

Tag là một đối tượng, vì vậy chấm Integer:

/* 
* UseValueOf 
* ---------- 
* Priority: 4/10 
* Severity: Warning 
* Category: Performance 
* 
* You should not call the constructor for wrapper classes directly, such as`new 
* Integer(42)`. Instead, call the valueOf factory method, such as 
* Integer.valueOf(42). This will typically use less memory because common 
* integers such as 0 and 1 will share a single instance. 
*/ 
//MyView.setTag(new Integer(42)); 
MyView.setTag(Integer.valueOf(42)); 

Sau đó lấy giá trị như thế này:

int tagValue = (Integer)MyView.getTag(); 
+0

Tôi nghĩ bạn không phải sử dụng phần 'Integer.valueOf (number)'. Không chỉ là 'setTag (42)' làm việc cho điều này? –

+0

Điều này gây hiểu lầm, bạn không thể truyền 'chế độ xem' sang' Số nguyên' – Darrell

+0

@ Thẻ Darrell không phải là Chế độ xem, đó là một đối tượng. – tdevaux

0

Bạn vượt qua trong một số nguyên và nhận được trong một biến chỉ mục. Đây là đoạn mã

int Index = Integer.parseInt(v.getTag().toString()); 
System.out.println(Index);