0

我的ListView包含一个CheckBox和多个TextViews,并且复选框在特定点击时动态生成,但是当我运行代码来生成这些复选框时,它在前 10 个列表视图行中运行良好,之后它给出了一个NULLPointerException.

我该如何纠正它

以下是我的代码片段:

ListView listView = (ListView) findViewById(R.id.listview);
int size = listView.getAdapter().getCount();

for(int i = 0; i<size; i++) {
    View view = listView.getChildAt(i);
    CheckBox chk = (CheckBox) view.findViewById(R.id.check);
    chk.setVisibility(1);
}

Button btnDone = (Button) findViewById(R.id.btnDone);
btnDone.setVisibility(1);
4

1 回答 1

1

因为现在列表上只有 10 个项目可见,所以 listView.getAdapter().getCount() 获取总列​​表上的项目数,而不仅仅是可见的。

您可能会在 listView.getChildAt(i) 上获得空指针。

ListViews 只有现在可见的项目,例如,如果你可以显示 10 个项目并且你滚动到项目 10,它会显示从索引 10 到 19 的项目,所以在这种情况下 listView.getChildAt(0) 将为你提供10 项而不是 0。

我建议您更改 getView() 方法上复选框的显示与否,如果运行时更改,您只更改可见的复选框。

于 2013-01-31T13:09:48.600 回答