2012-07-30 56 views
5

Tôi đang sử dụng AutoCompleteTextView trong ứng dụng của mình bằng bộ điều hợp tùy chỉnh và nó hoạt động hoàn hảo ở chế độ dọc. Tuy nhiên, ở chế độ nằm ngang, bàn phím phần mềm chiếm hầu hết màn hình và chế độ xem văn bản sử dụng các nút lớp phủ thay vì Chế độ xem do bộ điều hợp cung cấp.AutoCompleteTextView gợi ý ở chế độ ngang

Tôi không thể tìm thấy tài liệu rõ ràng về cách hoạt động của cảnh này. Dường như trong chế độ ngang AutoCompleteTextView bỏ qua phương thức getView() của bộ điều hợp, thực hiện một số công việc bẩn bằng cách sử dụng getItem() và tự hiển thị các mục bằng cách sử dụng các chuỗi thô.

Để làm cho mọi việc tồi tệ hơn có vẻ như rằng trong AutoCompleteTextView được accualy trình bày HAI danh sách gợi ý autocompletion: thả xuống VÀ overlay nút tiêu chuẩn trong cùng một thời gian (đây là cũng có thể nhìn thấy nếu chúng ta đặt imeOptions để flagNoExtractUi để ngăn chặn AutoCompleteTextView mở rộng theo chiều ngang) .

Tôi muốn cung cấp chế độ xem của riêng mình trong cả hai trường hợp - nhưng tôi đã quản lý chỉ để thực hiện menu thả xuống cho đến thời điểm này. Bất kỳ thay đổi nào để cung cấp chế độ xem tùy chỉnh cho danh sách được xếp chồng?

Tôi rất tiếc nhưng tôi không thể đăng hình ảnh do xếp hạng thấp. Tôi có thể gửi cho họ nếu có ai cần chúng.

+0

bạn có thể giúp tôi với http://stackoverflow.com/questions/29046302/how-to-implement-autocompletetextview-with-listview –

Trả lời

0

Tôi vừa mới gặp sự cố này. Như bạn đã nói, trong bối cảnh TextView dựa trên các gợi ý tự động hoàn thành của nó trên kết quả của getItem(). Tôi không thực sự thấy một cách để cung cấp bất cứ điều gì khác hơn là văn bản trong kịch bản này, nhưng một giải pháp đơn giản để có được văn bản chính xác để hiển thị trong cảnh quan là ghi đè toString() cho đối tượng bạn đang dựa trên gợi ý. Ví dụ, trong kịch bản của tôi, tôi đang sử dụng một danh sách các đối tượng Contact để điền vào các gợi ý tự động hoàn thành của tôi, vì vậy tôi overrode toString() trong lớp Contact của tôi để hiển thị "FirstName LastName" thay vì một đối tượng thô như "Contact @ a2a6d4d3a5. "

+0

Có một [giải pháp tốt hơn] (http://stackoverflow.com/a không/12934794/2469901) thay đổi cách toString() hoạt động, cái nào có thể muốn được triển khai khác với kịch bản này. – Skytile

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