ListView doesn't scroll smoothly when I add AdView as an item
<p>I am implementing the <code>Google Ads</code> in my android app. Mostly I am interested in implementing the ads inside a <code>ListView</code>. For example every 10-th element I display an item containing the <code>AdView</code>. It will be only one Ad that it is displayed a various number of time. Below is my code. It works, the ads are displayed in the <code>ListView</code>, the app doesn't crash, but there is one small problem. When I scroll the list, the moment it comes to item displaying <code>AdView</code>, it seize for a bit, the scroll isn't so smoothly. I have tried the list without displaying ads and the scroll is fine.</p>

<pre><code>   NewsHomeAdapter(ArrayList&lt;AdMobInterfaceList&gt; items, Context context) {

        this.items = items;
        this.mContext = context;
        // member variable
        // iteron mbi objektet e bizneset dhe kontrollon cfare tipi eshte. Ne
        // varesi te tipit theret adapterin e tij
        for (AdMobInterfaceList item : items) {

            if (item.getType() == 0) {
                rows.add(new AdMobItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }
            if (item.getType() == 1) {
                rows.add(new NewsItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }


        }
    }

    @Override
    public int getViewTypeCount() {
        return 2;
    }

    @Override
    public int getItemViewType(int position) {
        return rows.get(position).getViewType();
    }

    public int getCount() {
        return rows.size();
    }

    public void updateNjoftimeList(ArrayList&lt;AdMobInterfaceList&gt; items) {


        for (AdMobInterfaceList item : items) {

            if (item.getType() == 0) {
                rows.add(new AdMobItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }
            if (item.getType() == 1) {
                rows.add(new NewsItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }


        }

        this.notifyDataSetChanged();

    }


    public void updateNjoftimeFilterList(ArrayList&lt;AdMobInterfaceList&gt; items) {

        //mNjoftime.clear();
        //mNjoftime.addAll(newList);


        rows.clear();

        for (AdMobInterfaceList item : items) {

            if (item.getType() == 0) {
                rows.add(new AdMobItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }
            if (item.getType() == 1) {
                rows.add(new NewsItemAdapter(LayoutInflater.from(mContext),
                        item, mContext));
            }
        }

        this.notifyDataSetChanged();

    }

    public Object getItem(int position) {
        return position;
    }

    public long getItemId(int position) {
        return position;
    }

    public View getView(int position, View convertView, ViewGroup parent) {
        return rows.get(position).getView(convertView);
    }
}
</code></pre>

<p>NewsItemAdapter.class</p>

<pre><code>public class NewsItemAdapter implements ListsItemInterface {

    final private AdMobInterfaceList item;
    private LayoutInflater inflater;
    private Context mContext;

    public NewsItemAdapter(LayoutInflater inflater, AdMobInterfaceList item, Context context) {
        this.item = item;
        this.inflater = inflater;
        this.mContext = context;
    }

    public View getView(View convertView) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.news_home_row, null);
            holder = new ViewHolder();
            holder.tittle = (TextView) convertView.findViewById(R.id.tittle);
            holder.category = (TextView) convertView.findViewById(R.id.category);
            holder.desc = (TextView) convertView.findViewById(R.id.desc);
            holder.desc.setVisibility(View.GONE);
            holder.published_time = (TextView) convertView.findViewById(R.id.published_time);
            holder.news_image = (ImageView) convertView.findViewById(R.id.news_image);

            convertView.setTag(holder);
        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        Typeface typeFace = Typeface.createFromAsset(mContext.getAssets(),
                "fonts/Lato-Regular.ttf");

        holder.tittle.setTypeface(typeFace);
        holder.desc.setTypeface(typeFace);
        holder.published_time.setTypeface(typeFace);
        holder.category.setTypeface(typeFace);

        holder.tittle.setText(((NewsItem) item).getTittle());
        holder.desc.setText(((NewsItem) item).getDesc());
        holder.published_time.setText(((NewsItem) item).getPublishedTimeString());
        holder.category.setText(((NewsItem) item).getCategory());

        //holder.news_image.getLayoutParams().width = 0;

        if (!((NewsItem) item).getImageUrl().isEmpty()) {
            UrlImageViewHelper.setUrlDrawable(holder.news_image, ((NewsItem) item).getImageUrl(), R.drawable.watermark_ikub);
        } else {
            holder.news_image.getLayoutParams().width = 0;
        }
        return convertView;
    }


    public int getViewType() {
        return 1;
    }

    static class ViewHolder {
        ImageView news_image=null;
        TextView tittle;
        TextView desc;
        TextView published_time;
        TextView category;

    }
}
</code></pre>

<p>AdMobItemAdapter.class</p>

<pre><code>public class AdMobItemAdapter implements ListsItemInterface {

    final private AdMobInterfaceList item;
    private LayoutInflater inflater;
    private Context mContext;

    public AdMobItemAdapter(LayoutInflater inflater, AdMobInterfaceList item, Context context) {
        this.item = item;
        this.inflater = inflater;
        this.mContext = context;
    }

    public View getView(View convertView) {
        ViewHolder holder;

        //we have a don't have a converView so we'll have to create a new one
        if (convertView == null) {
            convertView = inflater.inflate(R.layout.add_mob_layout, null);
            holder = new ViewHolder((AdView)convertView.findViewById(R.id.adView)) ;
            convertView.setTag(holder);

        } else {
            //get the holder back out
            holder = (ViewHolder)convertView.getTag();
        }

        holder.ad.setFocusable(false);
       AdRequest adRequest = new AdRequest.Builder()
                .addTestDevice("134BDAE1F7410A5CD779E89C5C8CBC20")
                .build();
        holder.ad.loadAd(((AdMobItem)item).getAdRequest());

        return convertView;
    }


    public int getViewType() {
        return 0;
    }

    public  class ViewHolder {
        public AdView ad;


        public ViewHolder(AdView ad) {
            this.ad = ad;

        }
    }
}
</code></pre>

<p>These is the code that I have used for the adapter of the <code>ListView</code>.I think the reason is that I load the ad for every item. But I don't know how to handle this. Any suggestions?</p>