0

我的列表中有两种类型的视图。

  1. 新闻视图
  2. 广告视图。

适配器的 getCount() 方法返回项目的总数。但是 getview 总是将位置返回为 0 或 1。我使用了 getViewType() 和 getViewCount() 方法。我也使用了 Holder。但是,它仍然重复这些项目。

这是我的代码:

@Override

    public int getViewTypeCount() {

        return 2;
    }
 @Override
    public int getItemViewType(int position) {
        if (getItem(position).inMobiNativeAd == null) {
            return NEWS_TYPE;
        } else
            return NATIVE_AD_TYPE;
}
    @Override
    public int getCount() {
        return super.getCount();
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        int viewType = getItemViewType(position);

        if (viewType == NEWS_TYPE) {
        return getNewsView(position, convertView, parent);
        } else {
            return getNativeAdView(position, convertView, parent);
        }

    }
 private View getNewsView(int position, View convertView, ViewGroup parent) {


        Holder holder;


        if (convertView == null) {
 convertView = mInflator.inflate(R.layout.news_layout, parent, false);
holder.title=(convertView)findViewById(R.id.title);
-------
------
   convertView.setTag(holder);
        } else {
            holder = (Holder) convertView.getTag();
        }
--------
------
   return convertView;
    }

private View getAdView(int position, View convertView, ViewGroup parent) {


        Holder holder;


        if (convertView == null) {
 convertView = mInflator.inflate(R.layout.ad_layout, parent, false);
holder.title=(convertView)findViewById(R.id.title);
-------
------
   convertView.setTag(holder);
        } else {
            holder = (Holder) convertView.getTag();
        }
--------
------
   return convertView;
    }

当我使用此代码时,列表项会重复。但是当我使用时,

@Override

    public int getViewTypeCount() {
       return getCount();
}
  @Override
    public int getItemViewType(int position) {
return position;
}

它工作正常。我知道这不是正确的方法。那么为什么我的代码在使用以前的方法时不起作用。任何帮助,将不胜感激。

4

0 回答 0