静态属性遇到的坑

今天再做一个功能的时候,遇到的坑,记录一下。
在一个类中定义了一个静态属性:
public class DangerData {
public static List<DangerDeviceDatas> deviceDataList = new ArrayList<DangerDeviceDatas>();

}

然后在另外一个类中调用此属性,给静态属性赋值了.
if (DangerData.deviceDataList != null && !DangerData.deviceDataList.isEmpty()) {
deviceDataList.addAll(DangerData.deviceDataList); //正确做法
//showDevice(DangerData.deviceDataList); //如果直接将静态属性值传到方法的话,debug的时候看到DangerData.deviceDataList是有值但是,方法中执行adapter的时候,getView方法不会执行,getCount也是不为0的,百度找了很久看到的解决方案都不适用我这 里。后来问了同事,说应该是在执行showDevice(DangerData.deviceDataList);方法的时候,已经执行了方法后DangerData.deviceDataList.clear();方法,所以才没有执行getView的。最后先new一个集合,将静态属性addAll进去,调用 showDevice方法的时候传new出来的集合过去,就没问题了。
showDevice(deviceDataList); 
 DangerData.deviceDataList.clear(); //清空静态属性

}
然后在一个方法中调用了此静态属性。
private void showDevice(List<DangerDeviceDatas> deviceData) {
adapter = new ShowDangerDeviceListAdapter(mActivity, deviceData);
viewHolder.getLvShowDevice().setAdapter(adapter);
}

猜你喜欢

转载自blog.csdn.net/qq_23934247/article/details/77624329