屏幕1:网格视图
屏幕2:详细页面
任务目标:
1)从服务器加载所有视频到网格视图中。
2)用户点击网格视图项目的任何位置。
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);
}
}
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);
}
}
问题:
如果videoPostList(VideoPostModel对象的数量约为100+)在从fragment传递数据到activity时有更多数据,则应用程序会崩溃,因为使用intent发送数据有限制(https://dev59.com/S2cs5IYBdhLWcg3w5H9a#37054839)。
巧妙的替代方法:
1) 静态arraylist
2) Application类中的arraylist
寻找实现上述功能的最优和高效解决方案。
任何建议、参考链接或代码,指导实现此目标将不胜感激,谢谢。
更新1:
我发现的另一种解决方法是使用枚举传递数据,但根据评论,我不确定它的性能。参考:https://dev59.com/mmcs5IYBdhLWcg3wfD5P#14706456