我有一个可滚动的 GridView:只有在向下滚动 GridView 之后才会显示一些项目。我们可以看到其他项目。问题是,我正在为 GridView 中的所有项目设置标签,但是通过跟踪 LogCat 我知道它不接受为 GridView 中的不可见项目设置标签(我的意思是项目在网格内,但当时不在屏幕上)
滚动前:
滚动后:
只有在向下滚动其他项目之后才会应用标签。
如何为网格的所有项目设置标签,即使它们在屏幕上或屏幕外?
您的问题是您在方法中设置了 TaggetView
并且该方法仅在需要显示视图时由框架调用。
不知道您需要对视图标签做什么,但我认为与其尝试从未显示的视图中获取数据,不如从 ImageAdapter ( ia.imageid[]
) 中获取数据。
编辑:
要更准确地回答您的问题:
如何为网格的所有项目设置标签,即使它们在屏幕上或屏幕外?
只要视图在不显示时并不总是存在:你不能这样做。
我建议您解释为什么需要这些标签......也许您可以使用替代解决方案而不是查看标签来满足您的最终需求。
无论如何,如果您确实需要在视图上显示尚未显示的标签:
onCreate
在方法中初始化一个视图数组。getView
适配器的方法以从视图数组返回视图,而不是创建视图。请注意,我不推荐此解决方案,因为它会消耗更多资源。
最后我自己得到了我的问题的解决方案。感谢所有提出宝贵建议的人。谢谢@ben75
我检查了当前单击项目的位置,然后应用了标签,所以如果用户想要选择当前不在焦点上的项目,他必须滚动网格,然后必须选择项目,然后只应用标签.