java - 直接调用ArrayList的最后一个Item

标签 java android arrays arraylist

我正在使用字符串数组来执行某些任务[假设以正确的顺序播放视频],并且>按照预期工作,请参阅以下代码:

    String[] videoUriList = {str1, str2, str3};

    if(null != videoUriList && videoUriList.length > 1) {
                // Plays the first video, then the second video.
                mediaSource = new ConcatenatingMediaSource(
                        buildMediaSource(Uri.parse(videoUriList[0])),
                        buildMediaSource(Uri.parse(videoUriList[1])),
                        buildMediaSource(Uri.parse(videoUriList[2]))
       );
    }

结果:使用上述场景,它仅以正确的顺序播放视频,首先它从 str1 开始...然后在 str1 完成后,它移动到str2 最后播放 str3

但是,如果我使用for循环来获得相同的结果,我面临一个问题,它直接播放 str3(列表的第 3 项 [即 - 第二个索引]),跳过 str1和 str2 来播放。

    ArrayList<String> arrayList = new ArrayList<String>();
    arrayList.add(str1);
    arrayList.add(str2);
    arrayList.add(str3);

    if( null != arrayList) {

      Log.d("arrayList::", String.valueOf(arrayList.size()));

      for(int i=0; i<arrayList.size(); i++)
      {
        String string = arrayList.get(i);
        Log.d("string::", string+", "+String.valueOf(i));

        mediaSource = new ConcatenatingMediaSource(buildMediaSource(Uri.parse(string)));

        }

      }

我的日志说:

D/arrayList::: 3
D/string::: http://www.storiesinflight.com/js_videosub/jellies.mp4, 0
D/string::: http://clips.vorwaerts-gmbh.de/VfE_html5.mp4, 1
D/string::: http://www.html5videoplayer.net/videos/toystory.mp4, 2

所以我在哪里犯了错误,for循环的情况下出了什么问题

最佳答案

您无法增量调用构造函数。您需要收集参数然后创建结果。在这种情况下,我们仍然可以使用循环将值收集到数组中,然后将该数组传递给构造函数:

MediaSource[] mediaSources = new MediaSource[arrayList.size()];
for (int i = 0; i < arrayList.size(); i++) {
    String string = arrayList.get(i);
    Log.d("string::", string+", "+String.valueOf(i));
    mediaSources[i] = buildMediaSource(Uri.parse(string));
}
mediaSource = new ConcatenatingMediaSource(mediaSources);

关于java - 直接调用ArrayList的最后一个Item,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45807996/

相关文章:

java - 深度复制和遗传算法

java - 我的 onClickListener 有什么问题?

javascript - 通过查找值 AngularJS 在数组中添加键

c - 二维数组的问题

javascript - 如何递归地将嵌套对象数组转换为平面对象数组?

java - SwitchCompat 无法与 firebase 数据库正常工作

java - BigInteger 阶乘 表 1-30

java - 使用函数进行bean比较的库函数?

android - FacebookActivity 没有在 Api 23+ 上调用 finish()

java - 为什么我应该包含一个 gradle 依赖项作为 `@aar`