Java 将spinner中的selecteditempostion与具有资源的arraylist进行比较
这可能是一个愚蠢的问题,但我对编码非常陌生,所以请容忍我 当按下按钮并在微调器中选择歌曲时,我尝试播放音频文件。但是数字似乎没有更新,我只播放了同一首歌Java 将spinner中的selecteditempostion与具有资源的arraylist进行比较,java,android,arraylist,spinner,Java,Android,Arraylist,Spinner,这可能是一个愚蠢的问题,但我对编码非常陌生,所以请容忍我 当按下按钮并在微调器中选择歌曲时,我尝试播放音频文件。但是数字似乎没有更新,我只播放了同一首歌 private void Onclick() { final int[] songlist ={ R.raw.salsa, R.raw.fantasy, }; mp = MediaPlayer.create(this, songlist[spinner.getSelec
private void Onclick() {
final int[] songlist ={
R.raw.salsa,
R.raw.fantasy,
};
mp = MediaPlayer.create(this, songlist[spinner.getSelectedItemPosition()]);
mp.setLooping(true);
play_btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
mp.start();}
});}
为什么这不起作用
编辑:onCreate方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play_btn = (ImageButton) findViewById(R.id.play_btn);
spinner = (Spinner) findViewById(R.id.song_spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,
R.array.songs_array, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
Onclick();
}
@覆盖
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
play_btn=(ImageButton)findviewbyd(R.id.play_btn);
微调器=(微调器)findViewById(R.id.song\u微调器);
ArrayAdapter=ArrayAdapter.createFromResource(此,
R.array.songs\u数组,android.R.layout.simple\u微调器\u项);
setDropDownViewResource(android.R.layout.simple\u微调器\u下拉菜单\u项);
旋转器。设置适配器(适配器);
Onclick();
}
要实现此功能,您只需在每次单击按钮时初始化media player对象
play_btn.setOnClickListener(
new View.OnClickListener() {
@Override
public void onClick(View v) {
// in your code it is initialised with the first selected object
mp = MediaPlayer.create(this, songlist[spinner.getSelectedItemPosition()]);
mp.setLooping(true);
mp.start();}
})};
你可以这样做:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
selectedSong = position;
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
添加一个类属性,如:
final int[] songlist ={
R.raw.salsa,
R.raw.fantasy,
};
int selectedSong; //default to 0
然后在类中,您可以使用以下命令添加微调器值更改事件的侦听器:
spinner.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
selectedSong = position;
}
@Override
public void onNothingSelected(AdapterView<?> parentView) {}
});
GetSelectEditePosition()不是Spinner类的方法,您是否将其与ListView混淆?谢谢您的回复,您知道其他方法吗?您可以向我展示Spinner属性的代码吗?(声明和初始化)?这是在我的onCreate方法中:我会编辑它。我已经根据你的UpdateAnks为回复添加了一个答案,我尝试了这个方法,但只得到了以下错误:无法解析方法“create(anonymous android.view.view.OnClickListener,int)”检查方法的语法!你说的我都做了,但我还是犯了个错误。我最终改变了
mp=MediaPlayer.create(这是歌曲列表[selectedsong])
to mp=MediaPlayer.create(MainActivity.this,歌曲列表[selectedsong])代码>这就成功了!是的,显然你需要改变第一类的上下文;)