2015-07-15 3 views
0

В моем приложении есть много таблиц, каждый из которых имеет разные макеты.Оптимизация адаптера для нескольких входов

Итак, я создал один ListAdapter, в котором передаю контекст и список, содержащий данные для отображения.

Однако класс осложняется из-за множества корпусов коммутаторов.

Обычный адаптер имеет if (convertView == null), затем мы установили данные и return convertView.

Но я с ViewHolders для каждой возможной таблицы, благодаря которой моя getview становится -

public View getView(int position, View convertView, ViewGroup parent) { 

    if (convertView == null){ 

     // inflate view and link with viewholders... 
     switch (num){ 

     case 1: 
      // for table 1 
      . 
      . 
      . 
     case n: 
      // for table n 
      break; 

     } 
    } 

    else { 

     // set tag for later access 
     switch (num) { 

     case 1: 
      . 
      . 
      . 
     case n: 

     } 

    } 

    // set VALUES 
    switch (num) { 

    case 1: 
     . 
     . 
     . 
     . 
    case n: 

    } 

    return convertView; 
} 

Излишне говорить, что это перепутались, некрасиво и не кажется эффективным.

Есть ли лучший способ достичь этого?

+0

Использовать тот же адаптер для каждого списка. –

+0

Элемент listview имеет разную компоновку в зависимости от таблицы. Наборы данных также различны. –

+0

чем надуть разную компоновку в адаптере и использовать общий вид зрителя –

ответ

0

Прежде всего, я бы рекомендовал использовать RecyclerView, так как он более эффективен. Если я правильно понимаю, вы хотите иметь несколько макетов в одном ListView. Вы можете добиться этого с помощью ViewTypes в RecyclerView

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