ngắn:
Vui lòng đọc @ Alex Lockwood và câu trả lời @ Jeet của.
trả lời của tôi:
Trước khi lý do tại sao, đó là tốt hơn/thích hợp cách sử dụng convertView
trong getView()
? Cũng được giải thích bởi Romain Guy trong số video này.
Một dụ,
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View rowView = convertView;
ViewHolder holderObject;
if (rowView == null) {
rowView = inflater.inflate(R.layout.list_single_post_or_comment, parent, false);
holderObject = new HolderForContent();
mapHolder(holderObject, rowView);
rowView.setTag(holderObject);
} else {
holderObject = (HolderForContent) convertView.getTag();
}
setHolderValues(holderObject, position);
return rowView;
}
private class ViewHolder {
TextView mTextView;
}
mapHolder(holderObject, rowView) {
//assume R.id.mTextView exists
holderObject.mTextView = rowView.findViewById(R.id.mTextView);
}
setHolderValues(holderObject, position) {
//assume this arrayList exists
String mString = arrayList.get(position).mTextViewContent;
holderObject.mTextView.setText(mString);
}
Trên đây là chỉ là một ví dụ, bạn có thể làm theo bất kỳ loại mô hình. Nhưng nhớ này,
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// todo : inflate rowView. Map view in xml.
} else {
// todo : get already defined view references
}
// todo : set data to display
return rowView;
}
Bây giờ đến mục đích của convertView
. lý do tại sao?
convertView
được sử dụng cho tối ưu hóa hiệu suất [see biểu đồ trong trang 14 bởi Romain Guy] bằng cách không tạo lại chế độ xem đã được tạo.
Nguồn: Mọi chỉnh sửa đều được hoan nghênh. Tôi thực sự thu thập thông tin này thông qua các liên kết này,
Đọc về getView()
trong nhà phát triển Android documentation.
Romain Guy nói về getView()
trong video "Turbo Charge UI của bạn" tại Google IO 2009 và material được sử dụng để trình bày.
Một số tuyệt vời blog bởi Lucas Rocha.
Những người muốn tìm hiểu kỹ hơn về mã nguồn: ListView và một mẫu implementation của getView()
có thể được nhìn thấy trong mã nguồn cho arrayAdapter.
Bài đăng SO tương tự.
how-do-i-choose-convertview-to-reuse
how-does-the-getview-method-work-when-creating-your-own-custom-adapter
Vì vậy, tôi nên sử dụng convertView nếu tôi xây dựng quan điểm của tôi mà không lạm phát một tập tin XML? –
@DanChaltiel có, bạn làm – localhost