我的列表中有两种类型的视图。
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;
}
它运作正常。我知道这不是正确的方法。那么为什么我的代码在使用上一个方法时不起作用。任何帮助将不胜感激。