我是Android和Java的新手。我正在构建一个应用程序,允许用户按下一个按钮,启动图像选择器,他们可以从SD卡上的图像中选择。该应用程序使用带有2个单元格的网格视图加载。一个单元格具有包含默认图像的图像视图。另一个是按钮。一旦选择了图像,图像视图就需要显示在网格视图的图像视图中。
我正在使用从图像uri解码的字符串路径来创建位图。然后我调用imageView.setImageBitmap(位图)。这无所事事。我尝试使用可绘制文件夹中的不同图像更新图像资源,但仍然没有。我在我的活动中在网格下面添加了一个单独的图像视图,并且该图像正在更新,这让我相信这与网格视图有关(这是我的第一个网格视图)。
非常感谢任何帮助。
谢谢。
答案 0 :(得分:2)
GridView
可能不是正确的选择。使用您正在处理的两个项目的简单LinearLayout
可能会更容易。
但是,这是你使用GridView
:
通过扩展BaseAdapter
来创建适配器。最重要的方法是getView()
,但这是你应该做的工作量最少的地方。
当GridView
重新绘制时,它将针对每个可见位置进行处理,并为每个位置调用getView()
。您将获得View
。如果视图为null
,请从XML资源中提取新资源,填充该资源并将其返回。如果视图不是null
,请使用适当的数据填充现有视图。通过回收视图来提高窗口小部件的效率。
您需要的技巧是,当您想要更改图像时,需要在适配器上调用notifyDataSetChanged()
以触发重绘(即在视图中填充新图像时适当的细胞)。
这是两分钟的版本。在Google I / O上一两年后,他们在The World of ListView
上进行了一次演讲并将其发布在YouTube上。这是一个很好的谈话,几乎所有适用于GridView
的内容。