Android Gridview 仅更新 ImageAdapter 外部的一个元素

发布于 2024-12-03 07:14:30 字数 780 浏览 1 评论 0原文

我有一个 gridview,使用元素的图像适配器, 它的实现方式如下例所示: http://developer.android.com/resources/tutorials/views/hello -gridview.html

此外,我为 getView 方法中的每个项目添加了一个单击侦听器,该侦听器使用处理程序将单击的位置发送到主类(在 ImageAdapter 之外)。

现在我只想更新相关的 imageView,但是:

  • 我不知道如何在 ImageAdapter 类之外获取 imageView(与处理程序一起发送?它不可序列化 - 在 ImageAdapter 和 getter 中创建一个缓冲区?)< /p>

  • 我不确定使用哪种方法改变图像。

目前我每次都会更新整个网格:

((ImageAdapter)gridview.getAdapter()).setImages(imageIds);
gridview.invalidate();

ImageAdapter:

public void setImages(int[] images) {
mImages = images;
notifyDataSetChanged();
}

提前致谢

I have a gridview using an image adapter for the elements,
it's implemented like in this example:
http://developer.android.com/resources/tutorials/views/hello-gridview.html

Additionally I added a click listener for each item in the getView method, which sends the clicked position to the main class (outside of ImageAdapter) using a handler.

Now I want to update only the concerned imageView, but:

  • I don't know how to get the imageView outside of the ImageAdapter class (send with the handler? It's not serializable - create a buffer in ImageAdapter and getter?)

  • I'm not sure which method to use to change the image.

Currently I'm updating the whole grid each time:

((ImageAdapter)gridview.getAdapter()).setImages(imageIds);
gridview.invalidate();

ImageAdapter:

public void setImages(int[] images) {
mImages = images;
notifyDataSetChanged();
}

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

秋凉 2024-12-10 07:14:30

你现在做的事情多少是正确的。

作为优化,您可以使用 ArrayList作为图像,并在适配器类中创建一个方法,以使用 ArrayList.set(int index, E 修改给定索引的值)元素)。然后调用 notifyDataSetChanged() 方法应该“理论上”仅更新更改后的图像视图:)

What you are currently doing is somewhat correct.

As an optimization, you could use an ArrayList<int> as the images and create a method in your adapter class to modify the value of a given index using ArrayList.set(int index, E element). Then calling notifyDataSetChanged() method should "theoretically" update the changed image view only :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文