0

Ich habe eine Liste von seekbars implementiert. Entsprechend meiner Funktionalität möchte ich die Summe aller seekbar 100% nicht überschreiten, zum Beispiel, wenn ich zuerst seekbar auf 60% ziehe, wird der nächste 40% nicht überschreiten.Auf Drage Event Seekbar Reset mit 0

Ich habe es funktioniert aber immer wenn ich die erste auf einen Wert ziehen (sagen wir 60%) und dann die zweite 40% und dann wieder, wenn ich versuche, die erste zu ziehen, um ihren Wert zu verringern wird auf 0 zurückgesetzt. Was ist das Problem mit meinem Code?

holder.shelfShareSeekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
       remainingShelfShare = 100 - shelfShareSum; 
       holder.percentTextView.setText(String.valueOf(progress)); 
      productShelfShareMap.get(((Products)list.get(position)).getProductID()); 
       if(progress > remainingShelfShare){ 
       holder.shelfShareSeekbar.setProgress(remainingShelfShare); 
       } 
       } 

      @Override 
      public void onStartTrackingTouch(SeekBar seekBar) {     
      } 

      @Override 
      public void onStopTrackingTouch(SeekBar seekBar) { 
       list.get(position).setSetSlider(seekBar.getProgress()); 
       shelfShareSum = 0; 

       productShelfShareMap.put(((Products)list.get(position)).getProductID(), Integer.parseInt(holder.percentTextView.getText().toString())); 

       for (HashMap.Entry<Integer, Integer> entry : productShelfShareMap.entrySet()){ 
        shelfShareSum += entry.getValue(); 
       }    
      } 
     }); 

Antwort

0

Verwendung SetMax Funktion seekbar in SecondSeekbar Setvalue.

int step = 1; // set it accordingly if you want data in 3.1,3.2 range 
int max = 100; 
int min; // if you want to set min criteria too. 

shelfShareSeekbar.setOnSeekBarChangeListener(
    new OnSeekBarChangeListener() 
    { 
     @Override 
     public void onStopTrackingTouch(SeekBar seekBar) {} 

     @Override 
     public void onStartTrackingTouch(SeekBar seekBar) {} 

     @Override 
     public void onProgressChanged(SeekBar seekBar, int progress, 
      boolean fromUser) 
     { 
      // Ex : 
      // And finally set value of next seekbar based on firstone 


secondseekbar.setMax((max - progress)/step); 

     } 
    } 
); 
+0

verwenden ich die setMax Methode, aber in meinem Fall ist es der Maximalwert von seekbar auf den verbleibenden Wert gleich von 100. ich die setProgress Methode verwenden musste, dass zu überwinden. – 3iL

+0

_Ich ziehe die erste Suchleiste auf 60%, die nächste wird 40% nicht überschreiten _ das ist was du willst. –