Ответ 1
К сожалению, вы не упоминаете, какую версию Android вызывают отчеты об ошибках. Однако, глядя на исходный код, Android 2.1-update1 кажется хорошим кандидатом.
Я просто скопирую весь метод, чтобы все было ясно:
public boolean removeFooterView(View v) {
if (mFooterViewInfos.size() > 0) {
boolean result = false;
if (((HeaderViewListAdapter) mAdapter).removeFooter(v)) { // <- line 274
mDataSetObserver.onChanged();
result = true;
}
removeFixedViewInfo(v, mFooterViewInfos);
return result;
}
return false;
}
Теперь сравните выше метод removeFooterView(...)
с реализацией более новой платформы:
public boolean removeFooterView(View v) {
if (mFooterViewInfos.size() > 0) {
boolean result = false;
if (mAdapter != null && ((HeaderViewListAdapter) mAdapter).removeFooter(v)) {
if (mDataSetObserver != null) {
mDataSetObserver.onChanged();
}
result = true;
}
removeFixedViewInfo(v, mFooterViewInfos);
return result;
}
return false;
}
Как вы можете видеть, "добавлено в несколько дополнительных проверок для определенных членов, не являющихся null
. Это означало бы, что первый метод действительно завершится неудачно в строке 274, если mAdapter == null
, тогда как это не приведет к сбою в более новой реализации.
Чтобы обойти это, все, что вам, вероятно, нужно сделать, это добавить что-то вроде lv.getAdapter() != null
, прежде чем пытаться удалить нижний колонтитул.