2013-10-28 145 views
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(); 
    } 

據我所知,他們的代碼是最好的做法,但是否能真正影響列出項目映射?

+0

是的,它肯定會影響項目映射。因爲ViewHolder總是多次調用getView方法來擴展布局。但是,如果佈局已經膨脹,那麼它將使用其ID來訪問它。 – GrIsHu

+0

但是在這兩種變體中,ViewHolder都會從視圖標籤中獲取。 – peliken

+0

是的,它影響映射。請嘗試滾動列表視圖或將屏幕置於橫向模式。你可以理解差異 – Arun

回答

0

不,您的代碼不會影響列表項映射。