Tôi đang sử dụng RecyclerView.Adapter nhưng tôi hơi bối rối về việc làm việc của phương pháp của nó onCreateViewHolder
.Android RecyclerView.Adapter onCreateViewHolder() làm việc
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
if(viewType==TYPE_ITEM) {
View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_common_item, viewGroup, false);
ViewHolder vh = new ViewHolder(mView);
return vh;
} else {
View mView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.inflate_uncommon_item, viewGroup, false);
ViewHolderFooter vh = new ViewHolderFooter(mView);
return vh;
}
}
Vì vậy, trong trường hợp tôi có 10 mục trong danh sách của tôi vì vậy đối với từng mặt phương pháp này sẽ được gọi và mỗi khi một mới ViewHolder
sẽ được tạo ra tất nhiên nó sẽ một lần cho mỗi điểm nhưng bây giờ câu hỏi của tôi là khi chúng tôi đã sử dụng ListView
và BaseAdapter
với chúng, chúng tôi lưu trữ ViewHolder
trong thẻ và sử dụng thẻ đó. Chúng tôi không tạo ra ViewHolder
cho mỗi mục.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
MyViewHolder mViewHolder;
if(convertView == null) {
convertView = inflater.inflate(R.layout.layout_list_item, null);
mViewHolder = new MyViewHolder();
convertView.setTag(mViewHolder);
} else {
mViewHolder = (MyViewHolder) convertView.getTag();
}
mViewHolder.tvTitle = detail(convertView, R.id.tvTitle, myList.get(position).getTitle());
mViewHolder.tvDesc = detail(convertView, R.id.tvDesc, myList.get(position).getDescription());
mViewHolder.ivIcon = detail(convertView, R.id.ivIcon, myList.get(position).getImgResId());
return convertView;
}
Vì vậy, chúng tôi không tạo thêm đối tượng người xem. Xin hãy giúp tôi hiểu những ưu và khuyết điểm.
Cảm ơn
Vì vậy, nó có nghĩa là nó sẽ tạo ra một viewholder cho từng hạng mục và sau đó sử dụng chủ sở hữu đó mỗi lần cho ô đó của danh sách. đúng? –
Cảm ơn Gil, tôi có thêm một câu hỏi trong RecyclerView.Adapter nhưng tôi sẽ đặt một câu hỏi riêng biệt trên ngăn xếp ngăn xếp. –
Tôi đã đi qua một số tài liệu được đề cập cho phương pháp trừu tượng onCreateViewHolder. ViewHolder mới sẽ được sử dụng để hiển thị các mục của bộ điều hợp sử dụng {@link #onBindViewHolder (ViewHolder, int)}. Vì nó sẽ được sử dụng lại để hiển thị các mục khác nhau trong tập dữ liệu, nên lưu ý tham chiếu đến chế độ xem phụ của Chế độ xem để tránh các cuộc gọi {@link View # findViewById (int)} không cần thiết. Vậy làm thế nào chúng ta có thể lưu trữ các tham chiếu đến các khung nhìn phụ? –