Заменить объект внутри массива Android

У меня есть arraylist, который заполнен объектами от bluetooth-сканера, и я показываю его в утилизаторе. Что я хочу сделать, так это то, что если он существует, я не добавляю его, а просто заменяю его значение.

Этот объект переносит расстояние, перемещаясь. Я получаю новый, поэтому мне нужно изменить значение расстояния, только не добавляя его снова.

 for( int i =0; i < datos.size() ; i++ ){

     if (!datos.contains(beaconModel))
     {
          datos.add(beaconModel);
          adapter = new BeaconAdapter(datos, RangingActivity.this);
          recyclerView.setAdapter(adapter);
          recyclerView.setLayoutManager(layoutManager);
          Log.d("datos", datos.toString());
          datos.set(i,beaconModel);
      }
      else if (datos.contains(beaconModel)){
          datos.set(i,beaconModel);
          adapter = new BeaconAdapter(datos, RangingActivity.this);
          recyclerView.setAdapter(adapter);
          recyclerView.setLayoutManager(layoutManager);
          Log.d("datos", datos.toString());
      }
 }

Благодаря этому я смог обновить данные, но добавил их тысячу раз мне xD.

BeaconModel это объект. datos - это массив, содержащий эти объекты.

3
задан 29.12.2016, 11:38
1 ответ

Я представляю себе то, что то, что ты добавляешь, есть у отождествляющих полей, которые дифференцируют их одни с другими, из-за ej: Имена, Пойдите, категории и т.д. и т.д. Оно было бы самым подходящим он состоит в том, чтобы искать идентификацию или отождествляющее поле и заменять стоимость, которую ты желаешь. Код, который ты оставил, добавляет тебе тысяча раз твою стоимость, потому что он ищет совпадения последовательностей, я представляю себе то, что у того, что ты добавляешь, есть имя, и найдя это он это добавляет.

public class Dato {
     String nombre;
     String valor;
     int id;
}

//Metodo
for( int i =0; i < datos.size() ; i++ ){
    if(datos[i].id == beaconModel.id){
        datos[i].valor = beaconModel.valor;
    }
}

Я представляю себе что-либо подобное, так как ты не оставил весь твой код, понимаю, что ты мог бы изменять твою модель

0
ответ дан 24.11.2019, 13:22