android列表视图动态变化

android列表视图动态变化,android,listview,Android,Listview,我有一个列表和相应的适配器。在列表中,我有20个项目存储在一个数组中。发生了一个事件,我的列表大小减少到10个项目(现在在数组中有10个项目)。我调用notifyDataSetChanged刷新列表。但我得到了空指针异常。我想这是因为这个方法 public View getView(int position, View convertView, ViewGroup parent) 调用了20次,而我只有10项,所以数组[position]在getView方法中的位置=11处返回null。我想的

我有一个列表和相应的适配器。在列表中,我有20个项目存储在一个数组中。发生了一个事件,我的列表大小减少到10个项目(现在在数组中有10个项目)。我调用
notifyDataSetChanged
刷新列表。但我得到了空指针异常。我想这是因为这个方法

public View getView(int position, View convertView, ViewGroup parent)
调用了20次,而我只有10项,所以数组[position]在getView方法中的位置=11处返回null。我想的方向对吗?我想了解更多关于getView的信息,但android文档不足以让我理解这些内容。

您应该修复这些问题

public int getCount () 

返回正确的计数

您可以使用处理程序动态更改列表视图

private final Handler mHandler=new Handler() 
{       
    @Override
    public void handleMessage(Message msg) {
        list.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mStrings));
        list.invalidate();
        return;
    }
};

您应该在adapter类中重置数组列表(即在调用notifyDatasetChanged()时,数组列表应该有10项。

我已经更新了arraylist,但是getView方法调用了20次(我想)因为我在arraylist中有10项,所以我得到了errorcreate数组列表的新实例并加载这10项或从现有数组列表中删除项,然后调用notifydatasetchanged。
handler.sendemptymessage(0);