首页 > 安卓的一个逻辑,空指针,不是很明白,求解

安卓的一个逻辑,空指针,不是很明白,求解

我的程序代码没问题,可能顺序不好,所以出现空指针...我大概画一下:

如果我像下面这样呢,在开头datas=null;运行就空指针,说明datas真是null,崩溃; 如果我在开头datas=new ArrayList<Bean>(); datas为零,界面没数据显示。

public class MainActivity extends AppCompatActivity {

private List<Bean> datas=null;
private ListView listView=null;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        
listView.setAdapter(new MyAdapter(this,layoutid,datas){

      //这里补充一个抽象函数,没问题,适配器也没问题
    });

  }

initView(){
   listview=findById......;
   getDataFromJson(); //这里完全没问题,有数据

 }

getDataFromJson(){

  Bean allData = JSON.parseObject(s, Bean.class);

datas = allData.getStories();

//这里用volley和fastJson获取数据没问题,关联得很好,返回给datas没问题,debug看有数据
   };
}

我想知道上面的逻辑出什么问题了,为何要么空指针,要么传进0个数据?

PS:虽然,我换个方式,把datas和listView.setAdapter写在getDataFromJson()里面就一切正常了。但还是想知道问题出在哪里?


我想你datas取值的时候应该在子线程吧


两个datas分别是完全不同的变量啊,和adapter绑定的datas并没有赋值啊,当然就是0数据了。


listView.setAdapter(new MyAdapter(this,layoutid,datas)
在这句加一个断点看传入的datas是什么。


汗,结果题主修改了题目,这不就很明显了吗- -


你的datas是子线程中赋值的吧,setAdapter是在主线程

【热门文章】
【热门文章】