2013-06-05 17 views
5

Chcę użyć Master-Detail-Flow z GridView po lewej stronie (master). Według the documentation, GridView ma metodę setItemChecked(position, value) który został dodany w poziomie API 1. Eclipse jednak stwierdza, że ​​metoda wymaga poziom API 11.GridView.setItemChecked (pozycja, wartość)

Który jest prawdziwy? Jeśli chcę mieć zaznaczone elementy w moim widoku GridView, czy muszę zaimplementować logikę (z zmianami tła itp.) Myelf?

Odpowiedz

5

Z mojego doświadczenia wynika, że ​​oficjalna dokumentacja jest błędna.

AbsListView.setItemChecked(position, value) istnieje tylko w HoneyComb (API 11). To, co sprawia, że ​​jest mylące, to że istniała ListView.setItemChecked(position, value) z API 1, podczas gdy GridView.setItemChecked(position, value) nie. Myślę, że to był tylko zły projekt API, który został ustalony w API 11.

Może to ze względu na ograniczenia w generatorze dokumentacji, ponieważ metoda została przeniesiona w górę łańcucha dziedziczenia do AbsListView API 11. Sposób AbsListView powinny być oznaczone jako Added in API level 11, a metoda w ListView powinna być oznaczona jako Added in API level 1.

Nie użyłem go, ale ktoś stworzył GridViewCompat, aby rozwiązać ten problem. https://github.com/paramvir-b/AndroidGridViewCompatLib

0

Uważam, że dokumentacja jest nieprawidłowa. Testowanie na emulatorze, metoda nie była dostępna na poziomie API 8. Dotyczy to wszystkich rozszerzeń metody setItemChecked() AbsListView, o ile mogę stwierdzić (ListView itp.). Myślę, że można bezpiecznie założyć, że jest dostępny tylko na poziomie API 11+