У меня данный момент Список реализован с Header и Footer.
Код:
//Header objects
bookDetailsObjects.setDate("16-янв-2105, 15:50");
bookDetailsObjects.setFromTo("TSE - IST");
bookDetailsObjects.setPNR("284TZ8");
bookDetailsObjects.setValidUntil("03-Мар 2016 23:59");
bookDetailsObjects.setRoute("Москва - Станбул");
bookDetailsObjects.setDepartDate("25-Мар 2016 12:30");
bookDetailsObjects.setFlightClass("Econom");
bookDetailsObjects.setStatus(2);
View header = getLayoutInflater().inflate(R.layout.book_details_layout_item, listView, false);
TextView mFromTo = (TextView) header.findViewById(R.id.tvFromTo);
TextView mBookDate = (TextView) header.findViewById(R.id.tvBookDate);
TextView mPNR = (TextView) header.findViewById(R.id.tvPNR);
TextView mValidUntil = (TextView)header.findViewById(R.id.tvValidUntil);
TextView mRoute = (TextView)header.findViewById(R.id.tvRoute);
TextView mDepartDate = (TextView)header.findViewById(R.id.tvDepartDate);
TextView mClass = (TextView)header.findViewById(R.id.tvClass);
TextView mStatus = (TextView)header.findViewById(R.id.tvStatus);
mFromTo.setText(bookDetailsObjects.getFromTo());
mBookDate.setText(bookDetailsObjects.getDate());
mPNR.setText(bookDetailsObjects.getPNR());
mValidUntil.setText(bookDetailsObjects.getValidUntil());
mRoute.setText(bookDetailsObjects.getRoute());
mDepartDate.setText(bookDetailsObjects.getDepartDate());
mClass.setText(bookDetailsObjects.getFlightClass());
switch(bookDetailsObjects.getStatus())
{
case 2:
mStatus.setText(getString(R.string.status_canceled));
break;
case 0:
mStatus.setText(getString(R.string.status_booked));
break;
case 1:
mStatus.setText(getString(R.string.status_buyed));
break;
default:
break;
}
//End of Header Objects
//Passengers objects
passengersObjects.setPassGroup(0);
passengersObjects.setName("Иванов Иван");
passengersObjects.setBirthDate("14.01.1992");
passengersObjects.setGender("Мужской");
passengersObjects.setAdultTickPrice(15000);
passengersObjects.setChildTickPrice(15000);
passengersObjects.setInfTickPrice(15000);
for (int i = 0; i < 5; i++){
passItems.add(passengersObjects);
}
//End Passengers objects
//Footer objects
bookDetailsObjects.setTotalPrice(45000);
View footer = getLayoutInflater().inflate(R.layout.book_layout_price_buttons, listView, false);
TextView mTotalPrice = (TextView) footer.findViewById(R.id.tvTotalPrice);
Button mCancel = (Button) footer.findViewById(R.id.btnDetCancel);
mCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.ToastShort(getApplicationContext(), "Отменено");
}
});
Button mBuy = (Button) footer.findViewById(R.id.btnDetBuy);
mBuy.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ToastUtils.ToastShort(getApplicationContext(), "Выкуплено");
}
});
mTotalPrice.setText(bookDetailsObjects.getTotalPrice() + "РУБ");
listView.addHeaderView(header);
listView.addFooterView(footer);
listView.setAdapter(new PassengersDetailAdapter(getApplicationContext(), R.layout.book_layout_pass_items, passItems));
}
Адаптер:
public class PassengersDetailAdapter extends ArrayAdapter<PassengersObjects> {
private int resource;
private LayoutInflater inflater;
private Context context;
static Resources r;
public PassengersDetailAdapter(Context ctx, int rsc, List<PassengersObjects> objects) {
super(ctx, rsc, objects);
resource = rsc;
inflater = LayoutInflater.from(ctx);
context = ctx;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = inflater.inflate(resource, null);
PassengersObjects passengersObjects = getItem(position);
TextView mName = (TextView)convertView.findViewById(R.id.tvFullName);
TextView mGender = (TextView)convertView.findViewById(R.id.tvGender);
TextView mBirthDate = (TextView)convertView.findViewById(R.id.tvBirthDate);
TextView mTickPrice = (TextView)convertView.findViewById(R.id.tvTickPrice);
mName.setText(passengersObjects.getName());
mGender.setText(passengersObjects.getGender());
mBirthDate.setText(passengersObjects.getBirthDate());
switch(passengersObjects.getPassGroup())
{
case 0:
mTickPrice.setText(passengersObjects.getAdultTickPrice() + "KZT");
break;
case 1:
mTickPrice.setText(passengersObjects.getChildTickPrice() + "KZT");
break;
case 2:
mTickPrice.setText(passengersObjects.getInfTickPrice() + "KZT");
break;
default:
break;
}
return convertView;
}
}
Выглядет так:
То есть, так как мне нужно. Но мне нужно, чтобы они все были в одном адаптере PassengersDetailAdapter, и никак не могу понять как это реализовать, каша в голове. Подскажите, пожалуйста!

getItemViewType()адаптера. Пример – pavlofff May 11 '16 at 14:01