2013-02-27 38 views
6

Tôi cần thay đổi văn bản cho một dải ô tiêu đề trong bảng dữ liệu.
Để đạt được điều đó, tôi sẽ cần truy xuất và lưu trữ các id chế độ xem được gán cho các ô đó, vì vậy chúng có thể được sử dụng sau này để xác định các chế độ xem ô đó.
Tuy nhiên, khi tôi cố gắng lấy ID cho chế độ xem ô vừa tăng, nó luôn trả về -1.android view.getId() trả về -1

Đây là mẫu mã của tôi:

@Override 
public View getView(final int row, final int column, View converView, ViewGroup parent) { 
    if (converView == null) { 
     converView = inflater.inflate(getLayoutResource(row, column), parent, false); 
     if (row == -1){ 
      int viewId = converView.getId(); 
      setHeaderId(viewId, column+1); 

     } 
    } 
...  
} 

Các converView.getId() trong đoạn code trên lợi nhuận -1, mặc dù thực tế rằng xem id đã được gán và có thể xem trong gỡ lỗi mã. Ví dụ: tôi có thể thấy những điều sau trong khi gỡ lỗi: converView = LinearLayout (id = 830042440680)

Bất kỳ ý tưởng nào tại sao tôi nhận được -1 (= NO_ID) trong mã ở trên?

Trả lời

9

Từ các tài liệu Android LayoutInflater:

Bơm phân cấp hình ảnh mới từ nguồn xml chỉ định.

Vì vậy, khi bạn gọi

converView = inflater.inflate(getLayoutResource(row, column), parent, false); 

converView chỉ được tạo ra bởi inflater bố trí của bạn và không có ID. Bạn nên đặt ID theo cách thủ công như thế này

converView.setId(YOUR_GENERATED_ID); 
+1

Đây là một câu trả lời tuyệt vời và nó đã giúp tôi rất nhiều. Cảm ơn bạn! Tôi đã không nhận ra rằng các id xem nội bộ được chỉ định bởi xml inflater là không thể truy cập và cần phải được gán bằng tay một lần nữa. Bây giờ tôi đã hoàn tất thành công nhiệm vụ cập nhật tiêu đề ô tiêu đề khi chạy. –

+0

Xem giải pháp đầy đủ tại: [http://stackoverflow.com/questions/15065467] –

+0

Tôi rất vui được giúp bạn) –

Các vấn đề liên quan