如何为 Android 应用程序创建 TikTok / Musical.ly 等功能?

Chi*_*ang 5 android android-intent android-layout android-fragments android-viewpager

屏幕 1:GridView

在此输入图像描述

屏幕 2:详细信息页面

在此输入图像描述

任务达成:

1)从服务器加载gridview中的所有视频。

2)用户点击gridview项的任意位置。

3) 在详细信息屏幕中打开并播放特定视频。

4) 垂直滚动播放下一个或上一个视频。

目前的实施:

GridFragment {
    ArrayList<VideoPostModel> videoPostList;
    RecyclerView gridView;

    onnItemClick() {
        Intent intent  = new Intent(this, DetailActivity.class);
        intent.putExtra("data", videoPostList);
        intent.putExtra("click_index", clickedIndex);
        intent.putExtra("pagination_index", paginationIndex);
        startActivity(intent);
    }
}
Run Code Online (Sandbox Code Playgroud)
DetailActivity {
    VerticlaViewPager vertiCalViewPager;
    ArrayList<VideoPostModel> videoPostList;

    onCreate() {
        videoPostList = getIntent().getParcelableArrayListExtra("data");
        clickedIndex = getIntent().getIntExtra("clickindex", 0);
        paginationIndex = getIntent().getIntExtra("pagination_index", 0);

        VideoFragmentStatePagerAdapter viewPagerAdapter = new VideoFragmentStatePagerAdapter(videoPostList);
        vertiCalViewPager.setAdapter(viewPagerAdapter);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:

如果 videoPostList 在将数据从片段传递到 Activity 时有更多数据(大约 100 多个 VideoPostModel 对象),则应用程序会崩溃,因为有意图发送数据存在限制(/sf/answers/2593838761/)。

黑客替代方案:

1)静态数组列表

2)Application类中的Arraylist

寻找最佳且有效的解决方案来实现上述功能。

任何实现这一目标的建议、参考链接或代码将不胜感激,并提前致谢。

更新1:

我发现的另一个解决方案是使用枚举传递数据,但根据评论,我不确定它的性能。参考:/sf/answers/1029451951/

Cha*_*anh 1

我认为您可以在活动中编写或在应用程序中使用 Arraylist,正如您提到的那样。或者它可能是最近出现在 Android Jetpack中的库。它在应用上本质上与Arraylist类似。

ViewModel对象使管理和存储数据变得更加容易。它允许您访问应用程序中不同活动或片段的数据。您尝试一下,希望对您有用