0
我試圖把多個視圖放到一個列表視圖,但即使當我使用getItemViewType()和getViewTypeCount),它不起作用,錯誤是:「ArrayIndexOutofBoundsException長度= 2;指數= 2;在列表視圖中間添加一個視圖
這裏是我的代碼:
public class SearchAdapter extends BaseAdapter {
private static final int TYPE_MOVIE = 1;
private static final int TYPE_ADS = 2;
private Context context;
private List<MovieObject> movies;
private LayoutInflater inflater;
public SearchAdapter(Context context, List<MovieObject> movies) {
this.context = context;
this.movies = movies;
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return 2;
}
@Override
public int getItemViewType(int position) {
int separator = (movies.size()/2) + 1;
if (position == separator) {
return TYPE_ADS;
} else {
return TYPE_MOVIE;
}
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return movies.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return movies.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
int type = getItemViewType(position);
View v = convertView;
ViewHolder h = null;
ViewHolderAds h2 = null;
if (v == null) {
h = new ViewHolder();
switch (type) {
case TYPE_MOVIE:
v = inflater.inflate(R.layout.adapter_search, null);
h = new ViewHolder();
break;
case TYPE_ADS:
v = inflater.inflate(R.layout.view_ads, null);
h2 = new ViewHolderAds();
v.setTag(h2);
break;
default:
break;
}
v.setTag(h);
} else {
if (type == TYPE_MOVIE) {
h = (ViewHolder) v.getTag();
} else {
h2 = (ViewHolderAds) v.getTag();
}
}
return v;
}
private class ViewHolder {
TextView tv_title, tv_date, tv_certification, tv_runtime;
}
private class ViewHolderAds {
}
}
好吧,謝謝它的工作,但在相關說明中,當我這樣做時,我失去了一個我的電影對象,應該是在這個位置:int separator =(movies.size()/ 2)+ 1;我如何添加一個視圖而不是替換? – Tsunaze
我不明白。你能改說嗎? – Blackbelt
我想要的是在兩部電影之間放置另一個對象,即不是電影(它是廣告)。我打算將廣告放在頁面中間。但是當我使用這種方法時,它會將電影與廣告重疊。 – Tsunaze