例えば、3種類のviewが存在する場合、
int getItemViewType(int position) {
return position % 3; // 行じ応じたViewのタイプを返す。タイプは0,1,2,3...と0始まりであること。
}
int getViewTypeCount() {
return 3; // Viewのタイプの数
}
としておく。View getView(int position, View convertView, ViewGroup parent)に渡されてくるconvertViewには再利用されるべきViewが渡されてくるのだが、上記のようにgetItemViewType()とgetViewTypeCount()をoverrideしていれば、そのpositionに応じた正しい種類のViewがconvertViewに渡されてくる。
コード例:
int getItemViewType(int position) {
return position % 3; // 行じ応じたViewのタイプを返す。タイプは0,1,2,3...と0始まりであること。
}
int getViewTypeCount() {
return 3; // Viewのタイプの数
}
View getView(int position, View convertView, ViewGroup parent) {
switch (getItemViewType(position)) {
case 0:
if (convertView == null) {
convertView = inflater.inflate(R.layout.item1, parent, false);
}
break;
case 1:
if (convertView == null) {
convertView = inflater.inflate(R.layout.item2, parent, false);
}
break;
case 2:
if (convertView == null) {
convertView = inflater.inflate(R.layout.item3, parent, false);
}
break;
}
return convertView;
}
0 件のコメント:
コメントを投稿