0

リストには 2 種類のビューがあります。

  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