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/
我认为您可以在活动中编写或在应用程序中使用 Arraylist,正如您提到的那样。或者它可能是最近出现在 Android Jetpack中的库。它在应用上本质上与Arraylist类似。
ViewModel对象使管理和存储数据变得更加容易。它允许您访问应用程序中不同活动或片段的数据。您尝试一下,希望对您有用
| 归档时间: |
|
| 查看次数: |
7409 次 |
| 最近记录: |