我想使用 onItemClickListener() 为列表视图中的每个视图播放不同的媒体文件

问题描述

这是用于存储列表视图数据的类

在这个类中存储了媒体资源,当被活动的适配器视图调用时可以使用。

public class word{
...
public word(...,int imgResourceId,int mediaResourceId){
        ...
        mMediaResourceId = mediaResourceId;
    }
    public int getMediaResourceId(){
    return mMediaResourceId;
}

这是listView的adapterView的代码

MediaPlayer 无法在adapterView 上创建,但我无法在oncreate 方法中访问媒体的资源ID...那么媒体播放器如何播放媒体onitemclick 或如何传递资源ID到mainactivity oncreate 方法

public class WordAdapter extends ArrayAdapter<word> {                                                           
                                                                                                            
private int mColorResourceId;                                                                               
                                                                                                            
                                                                                                            
public WordAdapter(Activity context,ArrayList<word> words,int colorResourceId){                            
                                                                                                            
    super(context,words);                                                                                 
    mColorResourceId = colorResourceId;                                                                     
                                                                                                            
}                                                                                                           
@Override                                                                                                   
public View getView(int position,View convertView,@NonNull ViewGroup parent) {                           
    View listItemVIew = convertView;                                                                        
    if(listItemVIew == null){                                                                               
        listItemVIew = LayoutInflater.from(getContext()).inflate(R.layout.list_item,parent,false);          
    }                                                                                                       
    word currentListItemView = getItem(position);    
    ...
    View textContainer = listItemVIew.findViewById(R.id.text_container);
    
    int color = ContextCompat.getColor(getContext(),mColorResourceId);
    
    textContainer.setBackgroundColor(color);


    return listItemVIew;
}                                                       

这是活动代码

这包含如何用数据膨胀词类并与适配器视图绑定..但是要传递给 MediaPlayer.create() 以便媒体播放器播放所需文件内容,该文件是在用数据膨胀词类实例期间输入的.

public class NumberActivity extends AppCompatActivity {

MediaPlayer mMedia;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.word_list);



    ArrayList<word> words= new ArrayList<>();

    words.add(new word("One","lutti",R.drawable.number_one,R.raw.number_one));
    ...        
    WordAdapter itemsAdapter =
            new WordAdapter(this,words,R.color.category_numbers);

    ListView listView =  findViewById(R.id.list);

    
    listView.setAdapter(itemsAdapter);

    listView.setonItemClickListener((parent,view,position,id) -> {
         mMedia = MediaPlayer.create(NumberActivity.this,R.raw.);
         mMedia.start();

    });


}

如何将输入提供给 mMedia,使其播放在 arraylist 单词中输入的媒体文件

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)