java.lang.IllegalStateException: Observer AdapterDataSetObserver was not register setadapter空指针

如果你和我描述的以下几点情况一样,那么这个我检查出来的bug解决方法可能能解决你的问题

1.setadapter放在onclick事件里面
2.适配器的写法是标准的优化过后的
3.数据有时为空,有时可以适配,只要为空的时候一次,再有数据就不能适配了

解决方法:

思路:在适配器中判断数据是否为空,如果为空就new 一个数组给它当值,
如果不为空就等于传入的值

做法:一开始就给adapter的数据源为null,自己写一个updatedata方法
点击之后直接更新,setadapter的是null
具体操作代码:

**adapter构造方法**
public GovernmentInstitutionAdapter(Context mContext,
            List institutionBeansList) {
        this.mContext = mContext;
        //判断是否为空
        if(institutionBeansList == null){
            institutionBeansList = new ArrayList();
        }else{
        this.institutionBeansList = institutionBeansList;
        }
    }
    //自己写的updatedata方法
    public void updateAdapter(List institutionBeansList) {
        if (institutionBeansList == null) 
            this.institutionBeansList = new ArrayList();
        else
            this.institutionBeansList = institutionBeansList;
        this.notifyDataSetChanged();
    }

activity中的具体步骤:

    searchButton.setOnClickListener(new OnClickListener() {
    //1.adapter的初始化,注意数据为null
            GovernmentInstitutionAdapter adapter = new GovernmentInstitutionAdapter(            
                    getApplicationContext(), null);

            @Override
            public void onClick(View v) {
    .......
    ....
    //2.调用updateadapter方法就相当于适配了一次
        adapter.updateAdapter(动态的要适配的数据源);
    ...
    //3.最后setadapter
        listview.setAdapter(adapter);
}

你可能感兴趣的:(android,开发中监测到并解决了的bug)