2017-09-16 46 views
-1

我有两个ArrayLists,我想删除第一个ArrayList的所有对象,并引用第二个ArrayList。我知道我可以使用removeAll()方法,但它返回false.Both ArrayLists是相同的类型。的removeAll()的任何替代ArrayList removeAll()返回false。任何替代品?

@Override 
    protected void onPostExecute(Void aVoid) { 
     super.onPostExecute(aVoid); 
     if (successfullyAssigned) { 
      ArrayList<CustomDataModel> dataList = adapter.getDataSet(); 
      Boolean deleted = dataList.removeAll(taskDataList); 
      Log.d("LogTag", "deleted ? " + deleted); 

      setPreference(getPrefName(), dataList); 
     } 
    } 

public ArrayList<CustomDataModel> getDataSet() { 
    return dataSet; 
} 

private class AssignTask extends AsyncTask<ArrayList<CustomDataModel>, Void, Void> { 
    ProgressDialog progressDialog; 
    ArrayList<CustomDataModel> taskDataList; 
    Boolean successfullyAssigned; 


    @SafeVarargs 
    @Override 
    protected final Void doInBackground(ArrayList<CustomDataModel>... callData) { 
     taskDataList = callData[0]; 
+0

它是否会返回'false',因为它是空的开始? –

+0

'removeAll'返回false,因为'dataList'和'taskDataList'不包含共同的元素。正如@JoeC所说,一个很好的选择是,其中至少有一个是空的 –

回答

1

有三个原因会发生这种情况

  1. 其中一个列表是空的。
  2. 该列表没有共同元素。
  3. 您没有执行CustomDataModel.equals()
+0

我一直在寻找它,是的,我意识到我没有重写。等于()在我的POJO类...感谢您的回复 –

+0

@KalpeshKundanani不客气 –