Я использую RecyclerView.Adapter, но я немного смущен относительно работы его метода onCreateViewHolder
.
@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;
}
}
Итак, у меня есть 10 элементов в моем списке, поэтому для каждого элемента этот метод будет вызван, и каждый раз, когда будет создан новый ViewHolder
, он будет один раз для каждого представления, но теперь мой вопрос, когда мы были используя ListView
и BaseAdapter
с ними, мы храним ViewHolder
в теге и используем это. Мы не создаем ViewHolder
для каждого элемента.
@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;
}
Итак, мы не создаем дополнительный объект зрителей. Пожалуйста, помогите мне понять плюсы и минусы.
Спасибо