昨天出于一些原因改写了之前一个项目的Listview的数据获取方式,结果数据是有的,而ListView却死活没有将数据显示出来。调试了很久,把数据一个一个Log出来,怎么看都觉得构造Adapter的list里面是有数据的。后来才发现自己犯了一个低级错误,这跟Java值传递方式有关,所以基础要扎实的原因就是这这么来的。
我们知道在使用自定义的Adapter的时候一般是需要在构造方法内传一个集合作为数据来源。比如下面是自定义的CommentAdapter的构造函数:
public CommentAdapter(List<CommentEntity> cmList) {
cmDataList = cmList;
}
由于需要从服务器加载数据,我先用一个空的commentDataList构造Adapter,等从服务器加载完数据后再调用notifyDataChanged()来刷新数据显示。
在Activity先这么写:
第一步:
mAdapter = new CommentAdapter(commentDataList); //空的commentDataList
mListView.setAdapter(mAdapter);
这一以来,CommentAdapter中的cmDataList这个变量就指向了Activity中的commentDataList这个变量所指向的内存空间