ArrayAdapter的getView()方法重复前两项

时间:2015-01-13 11:23:07

标签: android android-listview android-arrayadapter getview

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

  1. 新闻视图
  2. 广告视图。
  3. 适配器的

    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;
    }
    

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

0 个答案:

没有答案