Android 适配器卡在旧的ArrayList上
我在一对数组列表中执行一些重新排序,我有一个名为 自适应测量 它被设置为静态的Android 适配器卡在旧的ArrayList上,android,arraylist,adapter,android-arrayadapter,Android,Arraylist,Adapter,Android Arrayadapter,我在一对数组列表中执行一些重新排序,我有一个名为 自适应测量 它被设置为静态的ArrayList,称为measureviarrayfromDataIpat类 调试时,我可以看到静态列表已被正确分配,并且在向适配器发出列表已更改的通知之后 DataIpat.measureEviArray = (ArrayList<MeasureEvi>)measureEviArray.clone(); adapterMeasureEvi.notifyDataSetChanged(); 当对象被实例
ArrayList
,称为measureviarray
fromDataIpat
类
调试时,我可以看到静态列表已被正确分配,并且在向适配器发出列表已更改的通知之后
DataIpat.measureEviArray = (ArrayList<MeasureEvi>)measureEviArray.clone();
adapterMeasureEvi.notifyDataSetChanged();
当对象被实例化时,这个构造函数只被调用一次,所以我想这意味着它将被卡住在那里,我如何更新该列表?我认为问题在于,当数据更改时,您重新创建了
DataIpat.measureviarray
,而不是更新它。因此,适配器将指向旧阵列,DataIpat.measureEviArray
指向新上传的阵列。解决问题的一种方法是不这样做(创建一个全新阵列):
DataIpat.measureEviArray=(ArrayList)measureEviArray.clone();
您只需更新
DataIpad.measureEviArray
数组,使该数组包含您的新数据(例如,使用clear
和addAll
基本上获得与创建新ArrayList
相同的效果)。只需停止克隆列表并对原始数据进行处理即可
删除了这个,
DataIpat.measureEviArray = (ArrayList<MeasureEvi>)measureEviArray.clone();
DataIpat.measureEviArray=(ArrayList)measureEviArray.clone();
不是很理想,只是一个解决办法
DataIpat.measureEviArray = (ArrayList<MeasureEvi>)measureEviArray.clone();
DataIpat.measureEviArray = (ArrayList<MeasureEvi>)measureEviArray.clone();