Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 适配器卡在旧的ArrayList上_Android_Arraylist_Adapter_Android Arrayadapter - Fatal编程技术网

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
from
DataIpat

调试时,我可以看到静态列表已被正确分配,并且在向适配器发出列表已更改的通知之后

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();