Android 获取选定项值引发IndexOutOfBoundsException
我用一些mp3文件在一个片段中创建一个列表,然后我将这个列表传递给另一个片段,它可以工作,在这个片段中,当用户按下一个按钮时,我尝试获取项目值 下面这行代码在创建列表的片段中执行任务,但是在这个片段中它抛出一个IndexOutOfBoundsExceptionAndroid 获取选定项值引发IndexOutOfBoundsException,android,android-listview,android-arrayadapter,android-listfragment,Android,Android Listview,Android Arrayadapter,Android Listfragment,我用一些mp3文件在一个片段中创建一个列表,然后我将这个列表传递给另一个片段,它可以工作,在这个片段中,当用户按下一个按钮时,我尝试获取项目值 下面这行代码在创建列表的片段中执行任务,但是在这个片段中它抛出一个IndexOutOfBoundsException String trackId = SD_PATH + songs.get(position); 完整代码: public class QueueListFragment extends ListFragment { priva
String trackId = SD_PATH + songs.get(position);
完整代码:
public class QueueListFragment extends ListFragment {
private static final String SD_PATH = new String(Environment.getExternalStorageDirectory().getPath() + "/");
private List<String> songs = new ArrayList<String>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayAdapter<String> songList = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.playlist_item2, songs);
setListAdapter(songList);
}
public void onListReceived(List<String> songs) {
ArrayAdapter<String> songList = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.playlist_item2, songs);
setListAdapter(songList);
}
@Override
public void onListItemClick(ListView listView, View view, int position,
long longId) {
super.onListItemClick(listView, view, position, longId);
String trackId = SD_PATH + songs.get(position);
Toast.makeText(getActivity().getApplicationContext(), trackId, Toast.LENGTH_SHORT).show();
}
}
您是可变阴影
歌曲
,因此类作用域歌曲
的大小始终为0
。
您声明了歌曲
,并在顶部实例化了它:
private List<String> songs = new ArrayList<String>(); size of 0
或
或者在调用onListReceived()
后,准确地使类songs
指向新列表:
public void onListReceived(List<String> newSongs) {
this.songs = newSongs;
ArrayAdapter<String> songList = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.playlist_item2, songs);
setListAdapter(songList);
}
public void onListReceived(列出新闻歌曲){
this.songs=新闻歌曲;
ArrayAdapter songList=新的ArrayAdapter(getActivity().getApplicationContext(),R.layout.playlist_item2,歌曲);
setListAdapter(歌曲列表);
}
您在哪里初始化歌曲?看起来歌曲是空的,您正在尝试检索一个值
String trackId = SD_PATH + listView.getItemAtPosition(position);
String trackId = SD_PATH + listView.getAdapter().getItem(position);
public void onListReceived(List<String> newSongs) {
this.songs = newSongs;
ArrayAdapter<String> songList = new ArrayAdapter<String>(getActivity().getApplicationContext(), R.layout.playlist_item2, songs);
setListAdapter(songList);
}