1
ウェブサービスから取得したリストの項目を表示するこのアダプタを持っています。スクロールすると最初の位置のレイアウトが膨張しています。あなたがgetViewTypeCount
とgetItemViewType
は、2つの異なるconvertView
Sを取得するためにオーバーライドする必要がベースアダプタのスクロール位置
private class hwListArrayAdapter extends BaseAdapter {
private ArrayList<HomeWork> Items;
private final Activity context;
public hwListArrayAdapter(Activity context, ArrayList<HomeWork> items) {
this.context = context;
this.Items = items;
}
@Override
public int getCount() {
return Items.size() + 1;
}
@Override
public Object getItem(int position) {
return Items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View view, ViewGroup viewGroup) {
View v = view;
TextView desc, date, course;
if (position == 0) {
LayoutInflater vi;
vi = LayoutInflater.from(context);
v = vi.inflate(R.layout.homework_list_top, null);
AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, (int) (MyApplication.screenHeight * 0.05));
v.setLayoutParams(params);
} else {
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(context);
v = vi.inflate(R.layout.homework_list_item, null);
}
AbsListView.LayoutParams params = new AbsListView.LayoutParams(AbsListView.LayoutParams.MATCH_PARENT, (int) (MyApplication.screenHeight * 0.6)/8);
v.setLayoutParams(params);
desc = (TextView) v.findViewById(R.id.descriptionHW);
desc.setTypeface(MyApplication.dinar);
desc.setText(Items.get(position - 1).getDetails());
course = (TextView) v.findViewById(R.id.courseHW);
course.setTypeface(MyApplication.dinar);
course.setText(Items.get(position - 1).getCourseName());
date = (TextView) v.findViewById(R.id.dateHW);
date.setTypeface(MyApplication.dinar);
date.setText(dateConverter(Items.get(position - 1).getDueDate()));
}
return v;
}
}
の間の値を返すようにしてください。if(getItemViewType(position)== 0) ?? –
することができますが、この場合は大きな違いはありません。しかし、はい、一般的なルールとして、あなたはそうするべきです – Blackbelt