Chức năng chính xác của LayoutInflater là gì?
Khi bạn thiết kế bằng XML, tất cả các yếu tố giao diện người dùng của bạn chỉ là thẻ và thông số.Trước khi bạn có thể sử dụng các phần tử giao diện người dùng này (ví dụ: TextView hoặc LinearLayout), bạn cần tạo các đối tượng thực tế tương ứng với các phần tử xml này. Đó là những gì các inflater là cho. Các inflater, sử dụng các thẻ và các thông số tương ứng của họ để tạo ra các đối tượng thực tế và thiết lập tất cả các tham số. Sau này, bạn có thể lấy một tham chiếu đến phần tử UI bằng cách sử dụng findViewById().
Tại sao tất cả các bài viết mà tôi đã đọc kiểm tra nếu chuyển đổi là null hay không trước? Nó có nghĩa là gì khi nó là null và nó có nghĩa là gì khi nó không phải là?
Đây là một điều thú vị. Bạn thấy đấy, getView() được gọi là mọi khi một mục trong danh sách được vẽ. Bây giờ, trước khi mục có thể được rút ra, nó phải được tạo ra. Bây giờ convertView về cơ bản là chế độ xem được sử dụng cuối cùng để vẽ một mục. Trong getView() bạn thổi phồng xml đầu tiên và sau đó sử dụng findByViewID() để lấy các phần tử giao diện người dùng khác nhau của danh sách. Khi chúng ta kiểm tra (convertView == null) những gì chúng ta làm là kiểm tra xem nếu view là null (cho mục đầu tiên) sau đó tạo nó, nếu không, nếu nó đã tồn tại, tái sử dụng nó, không cần phải trải qua quá trình thổi phồng một lần nữa . Làm cho nó hiệu quả hơn rất nhiều.
Bạn cũng phải bắt gặp khái niệm về ViewHolder trong getView(). Điều này làm cho danh sách hiệu quả hơn. Những gì chúng tôi làm là tạo một trình xem và lưu trữ tham chiếu đến tất cả các phần tử giao diện người dùng mà chúng tôi nhận được sau khi tăng. Bằng cách này, chúng ta có thể tránh gọi rất nhiều findByViewId() và tiết kiệm rất nhiều thời gian. ViewHolder này được tạo ra trong điều kiện (convertView == null) và được lưu trữ trong convertView sử dụng setTag(). Trong vòng lặp khác, chúng ta lấy lại nó bằng cách sử dụng getView() và tái sử dụng nó.
Thông số gốc mà phương thức này chấp nhận là gì?
Cha mẹ là một Nhóm xem mà chế độ xem của bạn được tạo bởi getView() cuối cùng được đính kèm. Bây giờ trong trường hợp của bạn, đây sẽ là ListView.
Hy vọng điều này sẽ giúp ích:
Convertview == null là hữu ích khi tất cả itens của bạn theo cùng một bố trí. Ví dụ: khi bạn cần kiểm tra radio hoặc nút được chọn và thay đổi bố cục dựa trên từng mục, bạn cần phải phát lại hoặc hiển thị chế độ xem được lưu vào bộ nhớ cache. – sagits
Không cần quá reinflate. Chỉ cần bạn cần viết switch hoặc if-else ladder trong getview và tăng lượt xem theo trường hợp của bạn, ghi đè lên getItemViewType int (int position) và int public getViewTypeCount(). @sagits –
Nếu các câu lệnh thường hoạt động, nhưng khi sử dụng nút radio, chỉnh sửa văn bản và các loại nội dung tôi gặp phải khi gặp sự cố khi sử dụng chế độ xem được lưu trong bộ nhớ cache, có một số câu hỏi liên quan đến công cụ này. – sagits