2012-01-03 93 views
4

我有同样的看法多个搜索条:多SeekBars听众

barheures = (SeekBar)findViewById(R.id.barheures); // make seekbar object 
     barheures.setOnSeekBarChangeListener(this); // set seekbar listener. 
     // since we are using this class as the listener the class is "this" 
     barminutes = (SeekBar)findViewById(R.id.barminutes); 
     barminutes.setOnSeekBarChangeListener(this); 

这里是读心人:

@Override 
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) { 
    // TODO Auto-generated method stub 
    Log.v("", "" + bar); 
    textMinutes.setText("" + progress + "Minute(s)"); 
    textHours.setText("" + progress + "Heure(s)"); 
} 

我想要做一些不同的东西,如果第一或第二条陆续进入同一个列表器(这是一个好的做法?),但如何?在这里,我有我想要的^^

非常感谢

回答

17

那么现在你有2个seekbars与以下ID瑞特说不做的应用:

1)barheures - 其ID:R. id.barheures 2)barminutes - 其ID:R.id.barminutes

现在在onProgressChanged(搜索栏栏,INT进步,布尔FROMUSER)方法,请执行下列操作:

@Override 
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) { 
    // TODO Auto-generated method stub 
    Log.v("", "" + bar); 

    switch (bar.getId()) { 

    case R.id.barheures: 
     textHours.setText("" + progress + "Heure(s)"); 
     break; 

    case R.id.barminutes: 
     textMinutes.setText("" + progress + "Minute(s)"); 
     break; 
    } 
} 
+0

youre a“KING”Thanksssssss !!! – clement 2012-01-04 18:32:23

+1

谢谢,标记问题解决,如果它的感谢.. – 2012-01-05 13:07:34

4

而不是比较资源ID,您也可以检查SeekBar对象是否相等。例如:

private SeekBar bar1; 
private SeekBar bar2; 

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 

    ... 

    bar1 = (SeekBar) findViewById(R.id.bar1); 
    bar2 = (SeekBar) findViewById(R.id.bar2); 

    ... 
} 

@Override 
public void onProgressChanged(SeekBar bar, int progress, boolean fromUser) 
{ 
    if (bar.equals(bar1)) 
    { 
     // do something 
    } 
    else if (bar.equals(bar2)) 
    { 
     // do something else 
    } 
} 

我喜欢做这种方式,因为你永远只引用每个搜索栏资源的ID一次(在你的onCreate)。