Android 动态创建seekbar并为此提供侦听器,但它无法正常工作

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

我正在动态地膨胀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 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