2017-01-13 2 views
0

Я передаю ArrayList из Activity в адаптер RecyclerView. Но изменение значения в изменении активности в адаптере тоже. как я могу избежать этого?Пройти по стоимости и пройти по ссылке в Android-адаптере?

List<Object> objectList = Collections.synchronizedList(new ArrayList<Object>()); 

     public RecyclerViewAdapter(Context context,List<Object> commentDatas) { 
      mContext = context; 
      commentDataList = commentDatas; 
} 
+0

Вместо передачи 'ArrayList' создайте его копию и передайте копию. – alfasin

ответ

2

Потому что вы не показали свой код, поэтому я покажу свой код, например

При создании адаптера, можно отправлять данные адаптера через застройщик адаптера, как это:

List<MyObject> list; 

public RcvAdapter(List<MyObject> list, Context context) { 
     this.list = list; 
     this.context = context; 
    } 

Если вы хотите, чтобы решить вопрос, сделайте следующее:

List<MyObject> list = new ArrayList<>(); 

    public RcvAdapter(List<MyObject> list, Context context) { 
      this.list.addAll(list); 
      this.context = context; 
     } 

Надежда эта помощь!

+0

почему мы добавляем это. ? –

+1

Чтобы сделать его еще одним списком, а не ссылкой списка в Activity. Поэтому, если вы измените данные в списке активности, это не повлияет на список адаптеров. – TruongHieu

Смежные вопросы