2017-10-03 4 views
0

list of objects을 전달하는 대화 상자를 생성 한 activity이 있습니다. 대화 상자에서 글로벌 object list 데이터를 수정했습니다.대화 상자에서 Activity Object List가 수정되었습니다. Object List

문제는 내 대화 object list도 대화 상자 데이터 조작에서 수정되었습니다. 호출자 클래스 데이터를 처리하기 위해 리스너 나 메서드를 사용하지 않았습니다. AFAIK 이것은 별도의 객체이며 동일한 참조가 없으므로 변경되어서는 안됩니다.

활동 발신자 섹션

ProductQuantityReviewDialog dialog = new ProductQuantityReviewDialog(context, salesOrderList); 
dialog.show(); 

대화 상자 클래스 :

private HashMap<Integer, OrderSalesModel> salesOrderList; 

public ProductQuantityReviewDialog(@NonNull Context context, HashMap<Integer, OrderSalesModel> salesOrderList) { 
     super(context); 
     this.context = context; 
     this.salesOrderList = salesOrderList; 
    } 

업데이트

: 이 방법하지만 같은 문제에 시도. 생성자 내부

public ProductQuantityReviewDialog(@NonNull Context context, HashMap<Integer, OrderSalesModel> salesOrderList) { 
     super(context); 
     this.context = context; 
     orderList = new HashMap<>(salesOrderList); 
     // orderList.putAll(salesOrderList); 
} 

답변

1

전달 참조 대화 해시 맵을 참조하면 대화 상자 안에 별도의 목록을 유지해야 합격의 활동 해시 map.Instead과 동일한 주소를 참조합니다.

private Map<Integer, OrderSalesModel> mSalesOrderList; 

public RetrieveInput(@NonNull Context context, HashMap<Integer, OrderSalesModel> salesOrderList) { 
    super(context); 
    this.context = context; 
    copyDataToMap(salesOrderList); 
} 

private void copyDataToMap(HashMap<Integer, OrderSalesModel> salesOrderList) { 
    mSalesOrderList = new HashMap<>(); 
    for (Map.Entry<Integer, OrderSalesModel> entry : salesOrderList.entrySet()) 
    { 
     mSalesOrderList.put(entry.getKey(), entry.getValue()); 
    } 
} 
+0

'orderList = new HashMap <>(); orderList.putAll (salesOrderList); ' 이 변경되었지만 작동하지 않습니다. 같은 문제 –

+0

이 업데이트 된 코드를 사용해보십시오.이 작업을해야합니다. 같은 문제가 발생 했습니까? – Anonymous

+0

시도. 같은 것! 이전 활동에서 갱신 된 목록 값. –

0

코드에 있습니다. hashmap의 참조를 전달하고 있습니다. 그래서 다른 해시 맵도 변경됩니다.

대화 상자에서 새 해시 맵을 초기화하고 모든 값을 설정하십시오.

+0

모두 시도했습니다! 여전히 같은 문제가 발생합니다. 업데이트 된 섹션보기 –

관련 문제