创建带有for循环问题的动态按钮(Android,JAVA)

时间:2019-06-30 17:20:59

标签: java android for-loop

我正在尝试创建代码,以根据在单独的android studio活动中创建的wav文件的数量动态地创建differnet媒体播放器按钮。

每个wav文件使用以下文件路径保存

/data/data/com.example.androidaudiorecorder/files/event1.wav

/data/data/com.example.androidaudiorecorder/files/event2.wav

/data/data/com.example.androidaudiorecorder/files/event3.wav

这是创建按钮并将它们放置在数组中的代码:

   Button[] buttonsPlay = new Button[data];


    for (int loop = 0; loop < data ; loop++) {
        playID ++;

        Button button = new Button(this);
        button.setId(playID);
        button.setText("Play event "+playID);
        String buttonName = "PlayEvent" + playID;
        button.setLayoutParams(new LinearLayout.LayoutParams(500, 50));
        LinearLayout.LayoutParams ll = (LinearLayout.LayoutParams)button.getLayoutParams();
        ll.gravity = Gravity.CENTER;
        button.setLayoutParams(ll);
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
        button.setLayoutParams(params);
        buttonsPlay[loop] = button;
    }

创建每个按钮后,我要遍历数组中的所有按钮并播放相应的wav文件。

这是我到目前为止的尝试

        playID = 0;

  for (int loop = 0 ; loop < buttonsPlay.length ; loop ++){
        playID++;


        Toast.makeText(  ctx, "play is " +  playID , Toast.LENGTH_SHORT).show();

        buttonsPlay[loop] = (Button) findViewById(  buttonsPlay[loop].getId());
        buttonsPlay[loop].setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String dataSource = "/data/data/com.example.androidaudiorecorder/files/event"+ playID +".wav";


                playEvent( dataSource);


            }

        });

不幸的是,每次我播放wav时,它只会播放最后一次创建的wav事件。

例如,如果有10个wav文件,则每个按下的按钮都会播放:

“ / data / data / com.example.androidaudiorecorder / files / event10.wav”

如果有人对如何纠正此问题有任何建议,我将不胜感激。

0 个答案:

没有答案