美文网首页
ViewHolder模式超简洁写法

ViewHolder模式超简洁写法

作者: 六指禅 | 来源:发表于2016-07-05 09:56 被阅读113次

    先声明,从国外网站上看的,不是自己原创的,但确实很喜欢这个简洁的设计。
    ViewHolder这么写(只提供一个静态方法,其实可以加一个私有构造函数防止外部实例化),代码很简单,看过就明白了

    public class ViewHolder {
    // I added a generic return type to reduce the casting noise in client code
    @SuppressWarnings("unchecked")
    public static <T extends View> T get(View view, int id) {
    SparseArray<View> viewHolder = (SparseArray<View>) view.getTag();
    if (viewHolder == null) {
    viewHolder = new SparseArray<View>();
    view.setTag(viewHolder);
    }
    View childView = viewHolder.get(id);
    if (childView == null) {
    childView = view.findViewById(id);
    viewHolder.put(id, childView);
    }
    return (T) childView;
    }
    }
    在getView里这样

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

    if (convertView == null) {  
        convertView = LayoutInflater.from(context)  
          .inflate(R.layout.banana_phone, parent, false);  
    }  
    
    ImageView bananaView = ViewHolder.get(convertView, R.id.banana);  
    TextView phoneView = ViewHolder.get(convertView, R.id.phone);  
    
    BananaPhone bananaPhone = getItem(position);  
    phoneView.setText(bananaPhone.getPhone());  
    bananaView.setImageResource(bananaPhone.getBanana());  
    
    return convertView;  
    

    }

    相关文章

      网友评论

          本文标题:ViewHolder模式超简洁写法

          本文链接:https://www.haomeiwen.com/subject/zvshjttx.html