3iL
3iL

Reputation: 2176

On Drage Event Seekbar Reset with 0

I've implemented a list of seekbars. According to my functionality, I want the sum of all seekbar not to exceed 100% for example if I drag first seekbar to 60% the next one will not exceed 40%.

I have made it work but whenever I drag the first one to some value (let's say 60 %) and then the second one to let's say 40% and then again when I try to drag the first one to decrease its value resets to 0. What is the problem with my 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();
                }             
            }
        });

Upvotes: 1

Views: 152

Answers (1)

Dipali Shah
Dipali Shah

Reputation: 3798

Use SetMax function of seekbar to setvalue in SecondSeekbar.

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);

        }
    }
);

Upvotes: 0

Related Questions