RecyclerView如果您按一个按钮,则会播放声音

时间:2018-11-18 18:25:06

标签: android android-recyclerview

使用自定义的RecyclerView应用程序,该应用程序由一个textView和三个radioButton组成。 当您按下任何单选按钮时,将播放音频文件。

注意:
当我使用MeidaPlayer 里面的RecyclerView 该应用程序无法正常工作

代码类MainActivity

public class MainActivity extends AppCompatActivity {

private String[] question = {
        "The capital of France",
        "The capital of India",
        "The capital of Iraq"
};
private String[] answer1 = {"Paris", "New Delhi", "Baghdad" };
private String[] answer3 = {"Canberra", "Manama", "Brasilia" };
private String[] answer2 = {"Havana", "Doha", "Moscow" };

///////////////////////////////

protected void onCreate(Bundle savedInstanceState) {
    setContentView(R.layout.activity_main);
    super.onCreate(savedInstanceState);

    addQuestion();

}

//////////////////////////////

public void addQuestion() {

    List<Question> questionsList = new ArrayList<>();
    RecyclerView recyclerView = findViewById(R.id.recycler);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    for (int i = 0; i < question.length; i++) {

        String item0 = question[i];
        String item1 = answer1[i];
        String item2 = answer2[i];
        String item3 = answer3[i];

        Question questionClass = new Question(item0, item1, item2, item3);

        questionsList.add(questionClass);

    }

    QuesAdapter adapter = new QuesAdapter(questionsList);
    recyclerView.setAdapter(adapter);

}

}

此类旨在添加菜单项

public class Question {

final String question, answer_1, answer_2, answer_3;

public Question(String question, String answer_1, String answer_2, String answer_3) {

    this.question = question;
    this.answer_1 = answer_1;
    this.answer_2 = answer_2;
    this.answer_3 = answer_3;

}

}

此类用于RecyclerView自定义列表 这是问题 如果按下按钮 我想播放声音文件

public class QuesAdapter extends RecyclerView.Adapter<QuesAdapter.QuesHolder> 
{

private List<Question> questionList;

public QuesAdapter(List<Question> questionList) {
    this.questionList = questionList;
}

@Override
public QuesHolder onCreateViewHolder(ViewGroup viewGroup, int i) {

    View row = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.question, viewGroup, false);

    QuesHolder holder = new QuesHolder(row);

    return holder;
}

@Override
public void onBindViewHolder(QuesHolder viewHolder, int i) {

    Question question = questionList.get(i);

    TextView ques = viewHolder.question;
    final RadioButton answer1 = viewHolder.answer1;
    RadioButton answer2 = viewHolder.answer2;
    RadioButton answer3 = viewHolder.answer3;

    ques.setText(question.question);
    answer1.setText(question.answer_1);
    answer2.setText(question.answer_2);
    answer3.setText(question.answer_3);

    /////////////////////////////
    // Start: this is the problem
    // Press the button An audio file is playing
    answer1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Log.i("TAG", answer1.getText() + "");

        }
    });
    // End: this is the problem
    ///////////////////////////

}

@Override
public int getItemCount() {
    return questionList.size();
}

class QuesHolder extends RecyclerView.ViewHolder {

    private TextView question;
    private RadioButton answer1, answer2, answer3;

    public QuesHolder(View itemView) {
        super(itemView);

        question = itemView.findViewById(R.id.question);
        answer1 = itemView.findViewById(R.id.answer_1);
        answer2 = itemView.findViewById(R.id.answer_2);
        answer3 = itemView.findViewById(R.id.answer_3);

    }
}
}

1 个答案:

答案 0 :(得分:0)

将声音文件放入res目录中的raw文件夹中,您可能必须在res中创建raw文件夹,因为在创建项目时不存在该

final MediaPlayer mp = MediaPlayer.create(this, R.raw.sound);
answer1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        mp.start();
        Log.i("TAG", answer1.getText() + "");

    }
});