Android 动态创建seekbar并为此提供侦听器,但它无法正常工作
我正在动态地膨胀seekbar,但是如果我按下第一个seekbar,侦听器只会更改最后一个seek条的值Android 动态创建seekbar并为此提供侦听器,但它无法正常工作,android,android-inflate,android-seekbar,Android,Android Inflate,Android Seekbar,我正在动态地膨胀seekbar,但是如果我按下第一个seekbar,侦听器只会更改最后一个seek条的值 for (int i = 0; i < controlList.size(); i++) { view1 = seekbar_inflate.inflate(R.layout.mysxm_control_coloumn, null, false); LinearLayout.LayoutParams params = new Linear
for (int i = 0; i < controlList.size(); i++) {
view1 = seekbar_inflate.inflate(R.layout.mysxm_control_coloumn, null, false);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
FrameLayout frame = (FrameLayout) view1
.findViewById(R.id.sliderLayout);
vertical_seekbar=new VerticalSeekBar(MyApplication.getAppContext());
vertical_seekbar.setId(i);
final int id = vertical_seekbar.getId();
vertical_seekbar.setProgressDrawable(getResources().getDrawable(R.drawable.sxm_selector_column));
frame.addView(vertical_seekbar, params);
vertical_seekbar=(VerticalSeekBar)view1.findViewById(id);
equalizer_view.addView(view1);
vertical_seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean arg2) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
for(int i=0;i
如何为每个搜索栏提供侦听器?请给出一些答案将垂直搜索栏和视图1作为局部变量。您将它们作为实例,因此它们只保留上一次迭代的值,这就是为什么您的上一个搜索栏只起作用
for (int i = 0; i < controlList.size(); i++) {
View view1 = seekbar_inflate.inflate(R.layout.mysxm_control_coloumn, null, false);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
FrameLayout frame = (FrameLayout) view1
.findViewById(R.id.sliderLayout);
VerticalSeekBar vertical_seekbar=new VerticalSeekBar(MyApplication.getAppContext());
vertical_seekbar.setId(i);
final int id = vertical_seekbar.getId();
vertical_seekbar.setProgressDrawable(getResources().getDrawable(R.drawable.sxm_selector_column));
frame.addView(vertical_seekbar, params);
vertical_seekbar=(VerticalSeekBar)view1.findViewById(id);
equalizer_view.addView(view1);
vertical_seekbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean arg2) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
for(int i=0;i
只是对我的代码进行了轻微修改,在这段代码中,我意识到android的每个小部件都只基于id工作。在这段代码中,你可以区分seekbar变量,比如vertical\u seekbar和vertical\u seekbar1,这是我的解决方案。这个解决方案对我来说仍然很奇怪
for (int i = 0; i < controlList.size(); i++) {
view1 = seekbar_inflate.inflate(R.layout.mysxm_control_coloumn, null, false);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
FrameLayout frame = (FrameLayout) view1
.findViewById(R.id.sliderLayout);
vertical_seekbar=new VerticalSeekBar(MyApplication.getAppContext());
vertical_seekbar.setId(i);
final int id = vertical_seekbar.getId();
vertical_seekbar.setProgressDrawable(getResources().getDrawable(R.drawable.sxm_selector_column));
frame.addView(vertical_seekbar, params);
vertical_seekbar1=(VerticalSeekBar)view1.findViewById(id);
equalizer_view.addView(view1);
vertical_seekbar1.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar,
int progress, boolean arg2) {
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
}
for(int i=0;i