2010-06-08 28 views
10

Tôi đã học được rằng khi sử dụng android:entries với ListView, nó sử dụng android.R.layout.simple_list_item_1 làm bố cục cho mục danh sách và android.R.id.text1 làm ID của TextView bên trong bố cục đó. Nêu tôi sai vui long chân chỉnh tôi.Sử dụng android.R.layout.simple_list_item_1 với chủ đề ánh sáng

Biết điều này, tôi muốn tạo bộ điều hợp riêng của mình nhưng sử dụng cùng một tài nguyên bố cục, để cung cấp tính nhất quán giao diện người dùng với nền tảng. Vì vậy, tôi đã cố gắng như sau:

mAdapter = new SimpleCursorAdapter(
    getApplicationContext(), 
    android.R.layout.simple_list_item_1, 
    mSites, 
    new String[] { SitesDatabase.KEY_SITE }, 
    new int[] { android.R.id.text1 } 
); 

Thật không may, bởi vì tôi đang sử dụng một chủ đề ánh sáng (Tôi có android:theme="@android:style/Theme.Light" trong <application> của tôi), danh sách các mục xuất hiện với văn bản màu trắng, khiến họ không thể đọc được.

Tuy nhiên, khi sử dụng android:entries để chỉ định danh sách mục tĩnh, các mục xuất hiện chính xác, với màu văn bản màu đen.

Tôi đang làm gì sai? Làm thế nào tôi có thể làm cho bộ điều hợp động của tôi sử dụng bố trí tiêu chuẩn nhưng làm việc với một chủ đề ánh sáng?

Trả lời

15

Vui lòng sửa lỗi nếu tôi sai.

Bạn có ít nhất là sai. Nó sử dụng com.android.internal.R.layout.simple_list_item_1. Trong khi đó gần giống với android.R.layout.simple_list_item_1, nó có thể theo chủ đề khác nhau.

Ngoài ra, không bao giờ sử dụng getApplicationContext(). Chỉ cần sử dụng Activity của bạn làm Context. Xem nếu điều đó giúp.

+2

Thật vậy, sử dụng 'this' thay vì' getApplicationContext() 'sửa chữa nó. Wow! Cảm ơn! – Felix

+3

@Felix: Yeah, 'getApplicationContext()' là một phương pháp được xử lý nghiêm túc. Nó cung cấp cho bạn một đối tượng 'Application', là một' Context', nhưng rõ ràng không làm tốt với bất kỳ thứ gì liên quan đến GUI liên quan đến 'Context'. Trừ khi bạn thực sự cần đối tượng 'Application' (ví dụ, bạn có một tùy chỉnh), tôi sẽ không bao giờ sử dụng' getApplicationContext() '. Sau khi tất cả, phương pháp đó là một phương pháp ... trên 'Ngữ cảnh'. Vì vậy, theo định nghĩa, bạn đã có một 'Context' hoàn toàn thú vị. Tôi rất vui vì điều này đã hiệu quả! – CommonsWare

+0

Tôi luôn luôn ấn tượng rằng 'getApplicationContext()' là bằng cách nào đó * chính xác hơn * (nếu chúng thay đổi cách các bối cảnh hoạt động và 'this' không còn là' Context'? 'GetApplicationContext() 'có lẽ sẽ được cập nhật để phản ánh những thay đổi trong API và tôi sẽ không phải cấu trúc lại mã của mình). Cám ơn giải thích rõ ràng :) – Felix

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