Android Listview с разным расположением для каждой строки?

Я хочу создать Listview, в котором я хочу разный макет для всех разных строк. Затем как я могу создать пользовательский адаптер для установки разного макета для разных строк.

Любая помощь будет принята с благодарностью.

Заранее спасибо.

Solutions Collecting From Web of "Android Listview с разным расположением для каждой строки?"

Вам необходимо расширить свой Adapter и переопределить его метод getView .

 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); int resource; // Here you set 'resource' with the correct layout, for the row // given by the parameter 'position.' // // Eg: // // switch (someArray[position].type) { // case SOME_TYPE_A: resource = R.layout.a; break; // case SOME_TYPE_B: resource = R.layout.b; break; // ... // } View rowView = inflater.inflate(resource, parent, false); // Here you initialize the contents of the newly created view. // // Eg: // switch (resource) { // case R.layout.a: // TextView aA = (TextView) rowView.findViewById(R.id.aa); // aA.setText("View 1"); // ... // break; // case R.layout.b: // TextView bB = (TextView) rowView.findViewById(R.id.bb); // bB.setText("View 2"); // ... // break; // ... // } return rowView; } 

Дополнительные примеры адаптеров и способы их расширения см. В приведенных ниже ссылках.

Создать обычный адаптер, в функции create_view раздуйте раскладку xml в соответствии с типом строки.

например

 @Override public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context .getSystemService(Context.LAYOUT_INFLATER_SERVICE); if (position % 2 == 0 ) xml_type = R.layout.row_one else xml_type = R.layout.row_two View rowView = inflater.inflate(xml_type, parent, false); }