我的程序代码没问题,可能顺序不好,所以出现空指针...我大概画一下:
如果我像下面这样呢,在开头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是在主线程