2016-08-04 2 views
1

"result.setText"가 모든 SeekBars의 누적 진행 상황의 변화하는 총계를 보여주기를 원합니다. 그 변경 int를 자체 변수 (SeekBar의 모든 진행 상황의 합계와 같습니다)에 저장하려고합니다.모든 SeekBar 진행 값의 총 수를 텍스트로 설정하는 방법은 무엇입니까?

저는 9 개의 SeekBars를 가지고 있는데, 모두 최대 3 개 있습니다. 변경하면 그들 중 하나가 최대 totalScoreInt +1 싶습니다. 한 번에 하나씩 0부터 각각의 SeekBar를 하나씩 이동하려면 TotalScoreInt가 0에서 27까지 1 씩 증가하도록하고 TotalScoreInt는 각각에서 반대를 수행하면 27에서 0으로 1 줄입니다. 그들의 최대.

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 

    seekBar1value = progress; 
    seekBar2value = progress; 
    seekBar3value = progress; 
    seekBar4value = progress; 
    seekBar5value = progress; 
    seekBar6value = progress; 
    seekBar7value = progress; 
    seekBar8value = progress; 
    seekBar9value = progress; 

    totalScoreInt = 
      (seekBar1value 
        + seekBar2value 
        + seekBar3value 
        + seekBar4value 
        + seekBar5value 
        + seekBar6value 
        + seekBar7value 
        + seekBar8value 
        + seekBar9value); 

    switch (seekBar.getId()){ 
     case R.id.seekBar1: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar2: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar3: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar4: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar5: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar6: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar7: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar8: 
      result.setText("Score: " +progress); 
      break; 

     case R.id.seekBar9: 
      result.setText("Score: " +progress); 
      break; 
    } 

    //result.setText(String.valueOf("Score: " +totalScoreInt)); 
} 

이 코드는 SeekBar 진행률 값이 마지막으로 변경된 값으로 텍스트를 설정합니다.

SeekBars 진행률이 변경 될 때마다 그 수를 늘리거나 줄이기를 원합니다.

그래서 seekBar1 진행은 = 3 개 seekBar2 진행 = 2 totalScoreInt 당신은 당신의 카운터 변수와 함께, 각각의 모든 SeekBar을위한 글로벌 참조를 유지해야한다 (5)와 동일 것이며, 그는

+0

질문의 내용이 명확하지 않습니다. 자세한 정보를 제공하십시오. – 7geeky

답변

3

"결과"에 설정 될 경우 . 다음

private int progress; 

private SeekBar sb1, sb2, sb3; // And the others... 

private synchronized void handleSeekBars() { 
    progress = sb1.getProgress() + sb2.getProgress() + sb3.getProgress(); 
} 

와 같이, 각 SeekBar#OnSeekBarChangeListener() 내에서 호출 : : 그런 다음, 다음과 같이 다소 메서드를 만들 트릭을 할해야

sb1.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
    @Override 
    public void onProgressChanged(SeekBar seekBar, int i, boolean b) { 
     handleSeekBars(); 
     result.setText("Score: " + progress); 
    } 

    @Override 
    public void onStartTrackingTouch(SeekBar seekBar) { } 

    @Override 
    public void onStopTrackingTouch(SeekBar seekBar) { } 
}); 

합니다.

관련 문제