Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 获取选定项值引发IndexOutOfBoundsException_Android_Android Listview_Android Arrayadapter_Android Listfragment - Fatal编程技术网

Android 获取选定项值引发IndexOutOfBoundsException

Android 获取选定项值引发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

我用一些mp3文件在一个片段中创建一个列表,然后我将这个列表传递给另一个片段,它可以工作,在这个片段中,当用户按下一个按钮时,我尝试获取项目值

下面这行代码在创建列表的片段中执行任务,但是在这个片段中它抛出一个IndexOutOfBoundsException

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);  
    }