0
我正在爲我的ListView和ViewHolder類實現CustomAdapter。 我的代碼是:Android:ViewHolder概念
if (convertView == null) {
ViewHolder viewHolder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.card_item, null);
viewHolder.ivCard = (ImageView) convertView
.findViewById(R.id.ivCardImage);
convertView.setTag(viewHolder);
}
final ViewHolder holder = (ViewHolder) convertView.getTag();
但我的同事說我的變體可以顯示列表項錯誤,並修正它,以
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.card_item, null);
holder.ivCard = (ImageView) convertView
.findViewById(R.id.ivCardImage);
convertView.setTag(holder);
}else {
holder = (ViewHolder) convertView.getTag();
}
據我所知,他們的代碼是最好的做法,但是否能真正影響列出項目映射?
是的,它肯定會影響項目映射。因爲ViewHolder總是多次調用getView方法來擴展布局。但是,如果佈局已經膨脹,那麼它將使用其ID來訪問它。 – GrIsHu
但是在這兩種變體中,ViewHolder都會從視圖標籤中獲取。 – peliken
是的,它影響映射。請嘗試滾動列表視圖或將屏幕置於橫向模式。你可以理解差異 – Arun