Android Listview包含一个复选框和多个文本视图,这些复选框会动态生成,但会出现空指针异常

Android Listview包含一个复选框和多个文本视图,这些复选框会动态生成,但会出现空指针异常,android,Android,我的列表视图包含一个复选框和多个文本视图,并且复选框在特定的点击时动态生成,但是当我运行代码生成这些复选框时,它在前10个列表视图行中运行良好,之后它会给出一个NULLPointerException 我怎样才能改正呢 以下是我的代码片段: ListView listView = (ListView) findViewById(R.id.listview); int size = listView.getAdapter().getCount(); for(int i = 0; i<siz

我的
列表视图
包含一个
复选框
和多个
文本视图
,并且复选框在特定的点击时动态生成,但是当我运行代码生成这些复选框时,它在前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);
ListView ListView=(ListView)findViewById(R.id.ListView);
int size=listView.getAdapter().getCount();

对于(int i=0;i,因为现在列表上只有10个项目可见,listView.getAdapter().getCount()获取整个列表上的项目计数,而不仅仅是可见的

您可能在listView.getChildAt(i)上得到了空指针

listView只有当前可见的项目,例如,如果您可以显示10个项目并滚动到项目10,它将显示从索引10到19的项目,因此在本例中listView.getChildAt(0)将获取10个项目,而不是0


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

[主题外]我建议您不要使用
。setVisibility(1)
。您是否尝试使用适配器并在
getView()中创建这些复选框
适配器的方法?thanx我的问题现在解决了是的,这正是发生的事情我不知道如何使用getView()…请解释一下你设置复选框可见性的getView()方法。如果可见性因用户操作而改变,也许你应该有一个可见项列表,所以当android调用getView()时对于位置10,检查位置10上的复选框是否可见,并设置其可见性。