【发布时间】:2014-07-17 02:40:39
【问题描述】:
我最近在从 AbsListView 扩展的 ListView 中遇到了一个空指针异常(调用 showContextMenuForChild)。我在我的网站上找不到错误,所以我查看了 AbsListView 的源代码以找出其背后的原因。
setAdapter 方法对我来说有点奇怪:
/**
* {@inheritDoc}
*/
@Override
public void setAdapter(ListAdapter adapter) {
if (adapter != null) {
mAdapterHasStableIds = mAdapter.hasStableIds();
if (mChoiceMode != CHOICE_MODE_NONE && mAdapterHasStableIds &&
mCheckedIdStates == null) {
mCheckedIdStates = new LongSparseArray<Integer>();
}
}
if (mCheckStates != null) {
mCheckStates.clear();
}
if (mCheckedIdStates != null) {
mCheckedIdStates.clear();
}
}
为什么这个方法根本不使用适配器?有趣的是,我的“错误”是 AbsListView 试图调用为空的 mAdapter。他们是否忘记在此类中设置适配器?这不可能是真的,因为很多人都会看到这种情况,而我在 stackoverflow 上找不到有关此错误的任何信息
【问题讨论】:
标签: java android android-listview