My list is currently implemented with Header and Footer .
Code:
//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)); } Adapter:
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; } } It looks like this:
That is, as I need. But I need them all to be in the same PassengersDetailAdapter , and I just can’t figure out how to implement this, it's a mess in my head. Tell me please!

getItemViewType()method. Example - pavlofff