从自定义ImageView发送数据

3
我有自定义的BaseAdapter和带有GridView的布局,因为我需要自己的布局。每个单元格都有ImageViewTextView。在getView()方法中,我可以设置图像和文本。问题是Choreographer告诉我,有太多的帧被跳过了,这意味着主线程上的工作太多。

跳过172帧!应用程序可能在其主线程上执行太多工作。

所以我去了官方开发者网站,并找到了这个: http://developer.android.com/training/displaying-bitmaps/index.html 第一课展示了如何调整图像大小。好的,现在我可以根据需要调整图像大小,但我不知道宽度和高度。所以我尝试了ImageView.getHeight()ImageView.getWidht()等方法,但两种方法都返回null。
我在Stackoverflow上搜索并发现,如果我子类化ImageView,我就可以获得宽度和高度。
@Override
protected void onSizeChanged(int xNew, int yNew, int xOld, int yOld){
        super.onSizeChanged(xNew, yNew, xOld, yOld);
        viewWidth = xNew;
        viewHeight = yNew; 
}

现在我可以拥有这些值,但问题是我不知道如何将它们发送到我的BaseAdapter中。这是我的第一个问题。
第二个问题是如何调整图像大小而不阻塞主线程。我无法理解官方网站上的示例。任何帮助都将不胜感激,谢谢。 :-)

请发布您的基本适配器代码。 - Vulovic Vukasin
1
GridView(怎么说呢……)真是烂透了,你应该使用RecyclerView,它能更好地处理动态变化,并且在RecyclerView中无效化特定节点更加友好。同样的最终界面结果,我用GridView花了几周时间才稳定下来,而用RecyclerView只需2个小时。 - TacB0sS
1个回答

1
简单回答:使用Glide。它可以在后台加载您的图像,并自动将它们适配到ImageView中。它还针对快速滚动进行了优化,因此我强烈推荐使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接