Question

I got this tracker screen that tracks users days of working out and workout sets completed. I would like to add ProgressBar or RatingBar that displays some sort of progress/rating by increase of my counter.

Lets say that 5 stars or full ProgressBar would be when counter2 reaches 300 (counter2 (workout sets completed)).

enter image description here

My current code:

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub

    super.onCreate(savedInstanceState);

    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    a = new AlphaAnimation(1, 0);
    a.setDuration(120);

    if (savedInstanceState == null) {
        counter1 = 0;
        counter2 = 0;
    }
    setContentView(R.layout.tracker);

    counter1 = 0;
    counter2 = 0;

    add1 = (Button) findViewById(R.id.baddday);
    sub1 = (Button) findViewById(R.id.bsubday);
    add2 = (Button) findViewById(R.id.baddset);
    sub2 = (Button) findViewById(R.id.bsubset);
    list = (Button) findViewById(R.id.blist);
    bar = (ProgressBar) findViewById(R.id.progressBar1);

    display1 = (TextView) findViewById(R.id.tvDisplayDays);
    display2 = (TextView) findViewById(R.id.tvDisplaySets);
    Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/tele.ttf");
    display1.setTypeface(tf);
    display2.setTypeface(tf);

    add1.setOnClickListener(this);
    sub1.setOnClickListener(this);
    add2.setOnClickListener(this);
    sub2.setOnClickListener(this);
    list.setOnClickListener(this);

    SharedPreferences setting = getSharedPreferences("countersetting", 0);
    counter1 = setting.getInt("countervalue1", 0);
    counter2 = setting.getInt("countervalue2", 0);
    display1.setText("" + counter1);
    display2.setText("" + counter2);
            bar.setProgress(counter2);
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    savedInstanceState.putString("YourTextViewTextIdentifier1", display1
            .getText().toString());
    savedInstanceState.putString("YourTextViewTextIdentifier2", display2
            .getText().toString());
    savedInstanceState.putInt("int", counter1);
    savedInstanceState.putInt("int", counter2);
    super.onSaveInstanceState(savedInstanceState);
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    display1.setText(savedInstanceState
            .getString("YourTextViewTextIdentifier1"));
    display2.setText(savedInstanceState
            .getString("YourTextViewTextIdentifier2"));
    counter1 = savedInstanceState.getInt("int");
    counter2 = savedInstanceState.getInt("int");
}

@Override
protected void onStop() {
    super.onStop();

    SharedPreferences setting = getSharedPreferences("countersetting", 0);
    SharedPreferences.Editor editor = setting.edit();
    editor.putInt("countervalue1", counter1);
    editor.putInt("countervalue2", counter2);
    editor.commit();
}

@Override
public void onClick(View view) {
    // TODO Auto-generated method stub
    switch (view.getId()) {

    case R.id.baddday:
        counter1 += 1;
        display1.setText("" + counter1);
        add1.startAnimation(a);
        break;
    case R.id.bsubday:
        counter1 -= 1;
        display1.setText("" + counter1);
        sub1.startAnimation(a);
        break;
    case R.id.baddset:
        counter2 += 1;
        display2.setText("" + counter2);
        add2.startAnimation(a);

        bar.setProgress(counter2);
        bar.setMax(300);
        bar.incrementProgressBy(counter2);
        bar.getProgress();



        break;
    case R.id.bsubset:
        counter2 -= 1;
        display2.setText("" + counter2);
        sub2.startAnimation(a);
        bar.setProgress(counter2);
        bar.incrementProgressBy(counter2);
        bar.getProgress();

        break;
    case R.id.blist:
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {

                Intent i = new Intent(Tracker.this, List.class);
                startActivity(i);
            }
        }, 150);
        list.startAnimation(a);
        break;

    }

}

}

Was it helpful?

Solution

Lets say that 5 stars or full progressBar would be when counter2 reaches 300 (counter2 (workout sets completed))

You already set the correct progress for the ProgressBar but you also increment the newly set progress again(by the counter value) which will not show the proper results. In the onCreate method:

bar.setMax(300);
bar.setProgress(counter2); // the initial stored value

and in the listeners for the buttons:

case R.id.baddset:
    counter2 += 1;
    display2.setText(String.valueOf(counter2));
    add2.startAnimation(a);
    bar.setProgress(counter2);
    break;
case R.id.bsubset:
    counter2 -= 1;
    display2.setText(String.valueOf(counter2));
    sub2.startAnimation(a);
    bar.setProgress(counter2);
    break;
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top