2013-11-01 2 views
7

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

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

Благодарим вас в Advance.

+0

проверить это http://stackoverflow.com/questions/4777272/android-listview-with-different-layout-for-each-row –

+0

используйте настраиваемое listview с пользовательским адаптером – Raghunandan

+0

, можете ли вы предоставить код medemo для этого –

ответ

6

создать обычный адаптер, в функции 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); 
} 
+0

Спасибо за помощь ... –

8

Вам нужно расширить 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.’ 
    // 
    // E.g.: 
    // 
    // 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. 
    // 
    // E.g.: 
    // 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; 
} 

Подробнее о адаптерах и их расширении см. Ниже.

+1

+1 для простоты – A23149577

Смежные вопросы