В моем приложении есть много таблиц, каждый из которых имеет разные макеты.Оптимизация адаптера для нескольких входов
Итак, я создал один 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;
}
Излишне говорить, что это перепутались, некрасиво и не кажется эффективным.
Есть ли лучший способ достичь этого?
Использовать тот же адаптер для каждого списка. –
Элемент listview имеет разную компоновку в зависимости от таблицы. Наборы данных также различны. –
чем надуть разную компоновку в адаптере и использовать общий вид зрителя –