首页 > 解决方案 > 如何将音频添加到 Recycler View 项目

问题描述

我正在制作一个应用程序,它将显示不同类型的吉他,当用户点击特定类型吉他的图像(或文本)时,它将播放该类型的即兴演奏(例如,点击电吉他将播放电吉他即兴演奏)。这是我的代码:

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

    recGuitarTypes();

}

private void recGuitarTypes(){

    recGtypes = (RecyclerView) findViewById(R.id.viewGuitarTypes);

    GuitarTypesRecyclerViewAdapter adapter = new GuitarTypesRecyclerViewAdapter(this);

    recGtypes.setAdapter(adapter);
    recGtypes.setLayoutManager(new GridLayoutManager(this, 2));

    ArrayList<Guitar> arrGuitar = new ArrayList<>();

    arrGuitar.add(new Guitar("Nylon String Spanish", "https://inside-guitar.com/wp-content/uploads/2019/05/Savarez-Flamenco-Guitar-Strings.jpg"));
    arrGuitar.add(new Guitar("Steel String Acoustic","https://hearthemusicplay.com/wp-content/uploads/2017/05/steelstringguitar-e1494992902529-1140x638.jpg"));
    arrGuitar.add(new Guitar("Electric Guitar","https://cdn.mos.cms.futurecdn.net/papiVxAvWm3QaDAD8fSdqS-970-80.jpg.webp"));

    adapter.setGuitars(arrGuitar);
    
        
}

我想检查代码是否有效,这就是为什么我尝试使用“原始”文件夹中的单个音频文件来测试它,该文件应用于 RecyclerView 中的所有项目。它没有。如果您想检查一下,这是代码:

recGtypes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            MediaPlayer mediaPlayer = MediaPlayer.create(view.getContext(), R.raw.steel_string);

            mediaPlayer.start();
        }
    });

提前感谢您的帮助。

标签: android-studioandroid-recyclerviewandroid-mediaplayeronclicklistener

解决方案


你可以试试下面的代码吗?

recGtypes.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

           private MediaPlayer mediaPlayer = new MediaPlayer();

          AssetFileDescriptor file = getResources().openRawResourceFd(R.raw.steel_string);
          mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(),  file.getLength());
          
          file.close();
          mediaPlayer.prepare();
          mediaPlayer.start();
        }
    });


推荐阅读