【发布时间】:2015-10-06 04:54:56
【问题描述】:
作为 Android 课程的一部分,我正在做一个小项目。 该应用程序应该使用某些站点的 API 检索最受欢迎的电影,然后将它们显示在网格视图中(使用海报作为缩略图)。 当点击特定电影时,将启动一个新的活动来提供详细信息。
我已经走到这一步了:
- 使用网站的 API 获得了最受欢迎的电影海报图片 URL 列表。
- 实现了一个扩展 ArrayAdapter 的适配器,它接受 ArrayList 作为数据源并将图像从 URL 加载到 ImageView 项中。
- 使用适配器填充 GridView。
- 使用以下代码在 Gridview 上设置监听器:
s:
gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
//do stuff according to position/view
}
点击电影时我需要传递给电影详细信息活动的信息可以在步骤 1 中获得(我刚刚从 json 中提取了海报 URL)。 为了能够在单击视图时提供信息,我需要(至少)还提取电影的 ID 并存储它。
看来我的选择是:
- 将 ID 存储在适配器中。然后,当点击发生时,使用 getItem(position) 获取 ID 并将其与意图一起发送。然后,下一个活动必须向服务器查询电影详细信息。
这意味着创建一个类:
static class MovieItem {
int Id;
string posterUrl;
}
并将适配器转换为使用ArrayList<MovieItem>。
- 与选项 1 相同,但使用 setTag 存储电影的 Id。
- 与选项 1 相同,但获取所有必需的信息(标题、评级、情节等)并将其存储到 MovieItem。下一个活动不需要查询。
- 与选项 3 相同,但使用 setTag (MovieItem)。下一个活动不需要查询。
我是应用程序开发的新手,我正在努力以正确的方式完成工作,不胜感激。
编辑: 还想补充一点,如果我在适配器中存储了额外的电影信息,那是否不合适,因为这些信息与该类无关?
感谢您的麻烦! :)
【问题讨论】: