title: Duplicated params in JSON within Android class
body: <p>I have a method that receive each interaction from another class,  a JSONObject- This JSONObject is kept each time to extract some parameters and re-send to add(new Entry...). then begin process, receiving again new JSONObject with updated data and again extract and so on...</p>
  
  <p>I need that when I receive each time this JSONObject, can be extracted the parameters but not add inmediatly to "temperaturas and dates by add(new Entry..)"  , I need this paramteres been kept in a "List" or "MAP" in order to eliminate the duplicate paramateres, after this I will send it to "add(new Entry...."
  Why? </p>
  
  <p><strong>each time JSONOBJECTS RECEIVED</strong></p>
  
  <pre><code># first time
  {"Id_temp":"1","temperatura":"20","Insertado_temp":"2016-08-16 12:30:29"}
  
  # second time
  {"Id_temp":"1","temperatura":"20","Insertado_temp":"2016-08-16 12:30:29"}
  
  # third time
  {"Id_temp":"2","temperatura":"25","Insertado_temp":"2016-08-16 15:48:53"}
  
  # Fourth time
  {"Id_temp":"4","temperatura":"50","Insertado_temp":"2016-08-16 18:17:33"}
  
  # Fith time
  {"Id_temp":"1","temperatura":"20","Insertado_temp":"2016-08-16 12:30:29"}
  
  # An so on ...
  </code></pre>
  
  <p>Because as I show here I am receiving some duplicated data inside of JSON.</p>
  
  <p><strong>this is the code(UPDATED):</strong></p>
  
  <pre><code>public class GraficaBarometro extends AppCompatActivity implements OnLoopjCompletedBarometro {
  
  private DrawerLayout drawerLayout;
  
  private OnLoopjCompletedBarometro loopjListener;
  
  // Progress Dialog Object
  ProgressDialog prgDialog;
  // Error Msg TextView Object
  TextView errorMsg;
  // Email Edit View Object
  
  private String temeperatura;
  
  private Timestamp timestamp;
  
  
  List&lt;Entry&gt; presiones = new ArrayList&lt;&gt;();
  List&lt;Entry&gt; temperaturas = new ArrayList&lt;&gt;();
  List&lt;String&gt; dates = new ArrayList&lt;&gt;();
  
  
  
  LineChart mChart;
  
  LoopjTasksBarometro loopjTasks;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.actividad_grafica_barometro);
      setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
      String idObjeto = (String) getIntent().getExtras().getSerializable("IdentidadEnviada");
  
      loopjTasks = new LoopjTasksBarometro(this, this);
      loopjTasks.CaptarParametros(idObjeto);
  
  
      mChart = (LineChart) findViewById(R.id.chartbarometro);
  
      int currentTime = (int) System.currentTimeMillis();
      timestamp = new Timestamp(currentTime);
  
      // no description text
      mChart.setDescription("");
      mChart.setNoDataTextDescription("You need to provide data for the chart.");
  
      // enable touch gestures
      mChart.setTouchEnabled(true);
  
      mChart.setDragDecelerationFrictionCoef(0.9f);
  
      // enable scaling and dragging
      mChart.setDragEnabled(true);
      mChart.setScaleEnabled(true);
      mChart.setDrawGridBackground(true);
      mChart.setHighlightPerDragEnabled(true);
  
      // limit the number of visible entries
      mChart.setVisibleXRangeMaximum(5);
  
      // if disabled, scaling can be done on x- and y-axis separately
      mChart.setPinchZoom(true);
  
      // set an alternative background color
      mChart.setBackgroundColor(Color.LTGRAY);
  
  
      mChart.animateX(2500);
  
  // to draw X-axis for our graph;
  
      XAxis xAxis = mChart.getXAxis();
      xAxis.setTextSize(11f);
      xAxis.setEnabled(true);
      xAxis.setPosition(com.github.mikephil.charting.components.XAxis.XAxisPosition.BOTTOM);
      //xAxis.setAxisMaxValue(125f);
      xAxis.setAxisMinValue(0f);
      xAxis.setTextColor(Color.DKGRAY);
      xAxis.setDrawGridLines(false);
      xAxis.setDrawAxisLine(true);
  
      // to draw axis line
  
      //modify leftYaxis range similarly others
      YAxis leftAxis = mChart.getAxisLeft();
      leftAxis.setTextColor(ColorTemplate.getHoloBlue());
      leftAxis.setAxisMaxValue(50f);
      leftAxis.setAxisMinValue(10f);
      leftAxis.setDrawGridLines(false);
      leftAxis.setGranularityEnabled(true);
  
  
      YAxis rightAxis = mChart.getAxisRight();
      rightAxis.setTextColor(Color.RED);
      rightAxis.setAxisMaxValue(50f);
      rightAxis.setAxisMinValue(10f);
      rightAxis.setDrawGridLines(false);
      rightAxis.setDrawZeroLine(false);
      rightAxis.setGranularityEnabled(false);
  
  
  }
  
  
  private void agregarToolbar() {
      Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
      setSupportActionBar(toolbar);
      final ActionBar ab = getSupportActionBar();
      if (ab != null) {
          // Poner ÃƒÆ’Ã‚Â­cono del drawer toggle
          ab.setHomeAsUpIndicator(R.drawable.drawer_toggle);
          ab.setDisplayHomeAsUpEnabled(true);
      }
  
  }
  
  private void prepararDrawer(NavigationView navigationView) {
      navigationView.setNavigationItemSelectedListener(
              new NavigationView.OnNavigationItemSelectedListener() {
                  @Override
                  public boolean onNavigationItemSelected(MenuItem menuItem) {
                      menuItem.setChecked(true);
                      seleccionarItem(menuItem);
                      drawerLayout.closeDrawers();
                      return true;
                  }
              });
  
  }
  
  
  private void seleccionarItem(MenuItem itemDrawer) {
      Fragment fragmentoGenerico = null;
  
      FragmentManager fragmentManager = getSupportFragmentManager();
  
  
      switch (itemDrawer.getItemId()) {
  
  
  
          case R.id.item_web:
  
              startActivity(new Intent(this, WebOficial.class));
              break;
  
          //fragmentoGenerico = new BlankFragment();
  
  
          case R.id.item_categorias:
              startActivity(new Intent(this, ActividadListaObjeto.class));
              break;
  
          case R.id.item_acceso:
              startActivity(new Intent(this, MainActivity.class));
              break;
      }
      if (fragmentoGenerico != null) {
          fragmentManager
                  .beginTransaction()
                  .replace(R.id.contenido_principal, fragmentoGenerico)
                  .commit();
  
          /*
          if(fragmentTransaction) {
              getSupportFragmentManager().beginTransaction()
                      .replace(R.id.content_frame, fragment)
                      .commit();
             */
  
      }
  
      // Setear titulo actual
      setTitle(itemDrawer.getTitle());
  }
  
  
  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      getMenuInflater().inflate(R.menu.menu_actividad_principal, menu);
      return true;
  }
  
  @Override
  public boolean onOptionsItemSelected(MenuItem item) {
      switch (item.getItemId()) {
          case android.R.id.home:
              drawerLayout.openDrawer(GravityCompat.START);
              return true;
      }
      return super.onOptionsItemSelected(item);
  }
  
  
  private void setData() {
  
      LineDataSet set1, set2;
  
      // create a dataset and give it a type
      //modifications with colour and stuf
      set1 = new LineDataSet(temperaturas, "temperatura");
  
      set1.setAxisDependency(YAxis.AxisDependency.LEFT);
      set1.setColor(ColorTemplate.getHoloBlue());
      set1.setCircleColor(Color.WHITE);
      set1.setLineWidth(2f);
      set1.setCircleRadius(2f);
      set1.setFillAlpha(65);
      set1.setFillColor(ColorTemplate.getHoloBlue());
      set1.setHighLightColor(Color.rgb(244, 117, 117));
      set1.setDrawCircleHole(false);
  
  
      //set1.setFillFormatter(new MyFillFormatter(0f));
      //set1.setDrawHorizontalHighlightIndicator(false);
      //set1.setVisible(false);
      //set1.setCircleHoleColor(Color.WHITE);
  
      // create a dataset and give it a type
      // similar above
      set2 = new LineDataSet(presiones, "presion");
      set2.setAxisDependency(YAxis.AxisDependency.RIGHT);
      set2.setColor(Color.RED);
      set2.setCircleColor(Color.WHITE);
      set2.setLineWidth(2f);
      set2.setCircleRadius(2f);
      set2.setFillAlpha(65);
      set2.setFillColor(Color.RED);
      set2.setDrawCircleHole(false);
      set2.setHighLightColor(Color.rgb(244, 117, 117));
      //set2.setFillFormatter(new MyFillFormatter(900f));
  
  
      mChart.getXAxis().setValueFormatter(new AxisValueFormatter() {
          @Override
          public String getFormattedValue(float value, AxisBase axis) {
              return dates.get((int) value);
          }
  
          @Override
          public int getDecimalDigits() {
              return 0;
          }
      });
  
      ArrayList&lt;ILineDataSet&gt; dataSets = new ArrayList&lt;ILineDataSet&gt;();
      dataSets.add(set1); // add the datasets
      dataSets.add(set2);
  
  
      // create a data object with the datasets
      LineData data = new LineData(dataSets);
      data.setValueTextColor(Color.BLACK);
      data.setValueTextSize(9f);
  
      // set data
      Log.i("Lists Sizedata", temperaturas.size() + " and " + presiones.size());
      mChart.setData(data);
      // move to the latest entry
      mChart.moveViewToX(data.getEntryCount());
  
  
  }
  
  @Override
  public void onLoopjTaskCompletedBarometro(JSONObject parametrosdht11, int i) {
      String temperatura = null;
      String presion = null;
      String fecha = null;
      String Id = null;
  
  
  
      try {
  
  
          temperatura = parametrosdht11.getString("temperatura");
          presion = parametrosdht11.getString("presion");
          fecha = parametrosdht11.getString("Insertado_temp");
          Id = parametrosdht11.getString("Id_temp");
  
  
  
  
      } catch (JSONException e) {
          e.printStackTrace();
      }
  
  
      temperaturas.add(new Entry(Float.valueOf(i), Float.valueOf(temperatura)));
      presiones.add(new Entry(Float.valueOf(i), Float.valueOf(presion)));
      dates.add(fecha); // reduce the string to just 12:13 etc
  
  
  
  
  
      //rrefresh we don't need to refresh since we are setting data after completing task
      mChart.notifyDataSetChanged();
      // mChart.setVisibleXRangeMaximum(12);
  
      //Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " + usuarioiJSONbject);
      Log.i(UtilitiesGlobal.TAG, "onSuccess: loopj " + "temperatura: " + temperatura + " presion: "
              + presion + " Fecha Inserción: " + fecha);
  
  }
  
  
  
  @Override
  public void onLoopCompleteBarometro() {
      setData();
      // it takes time to recieve time. so we set the map after loop is complete okay?
      //mChart.setVisibleXRangeMaximum(5);
  }
  }
  </code></pre>
  
  <p>Any Help will be welcome.</p>