2012-04-22 15 views
11

Tôi đã tạo bộ điều hợp tùy chỉnh của riêng mình mở rộng từ BaseAdapter để hiển thị danh sách xem ...Android: Cách tạo bộ điều hợp với id ổn định?

Tôi muốn nó hỗ trợ lựa chọn đơn và đa, vì vậy nó phải có id ổn định. Tôi đã kiểm tra với ADAPTER.hasStableIds() và kết quả là sai.

Tôi đã ghi đè phương pháp này để cố gắng lấy id chuồng không có may mắn.

public long getItemId(int position) { 
    return (long) getItem(position).hashCode(); 
} 

Bạn có ý tưởng làm cách nào để tạo? cảm ơn!

Trả lời

18

Ghi đè hasStableIds để trả về true.

Ngoài ra, dữ liệu trên bộ điều hợp của bạn phải ghi đè hashCode() hoặc có một số loại trường id cần trả về trên getItemId.

+1

Giải pháp đơn giản và dễ dàng. Cảm ơn! – giorgiline

+5

hashCodes không phải là duy nhất và mặc định thực hiện sử dụng vị trí như id. Cách hashCode liên quan đến số nhận dạng mặt hàng? –

+0

@Petr: Từ những gì tôi hiểu "Id ổn định" có nghĩa là bạn luôn có thể xác định các đối tượng/hàng của mình bằng cách sử dụng một số duy nhất (còn gọi là Id không bao giờ thay đổi trong vòng đời của bộ điều hợp). Vì vậy, trong cùng một cách bạn cần duy nhất/không clashing hashCodes cho HashMap, bạn có thể tái sử dụng hashCode ở đây trong Bộ điều hợp của bạn. –