gpt4 book ai didi

Android Gridview 和 getChildAt 与 NullPointerException

转载 作者:搜寻专家 更新时间:2023-11-01 09:11:25 24 4
gpt4 key购买 nike

我有一个 UI,它由加载了自定义适配器的 Gridview 组成。一个 ButtonAdapter,在这种情况下。所以网格加载正常,按钮点击功能就像我希望的那样,但现在我必须在按钮上指示它是“Activity ”选择。

我想我会通过跟踪和更改背景来做到这一点。事实证明,根据 SO 上的几篇文章,这些按钮在屏幕外时实际上并不存在......甚至在滚动后立即存在。滚动后尝试更改按钮背景时,我经常会遇到 NullPointerException。

我曾尝试将适配器中的 View 更改为 RadioButtons 和 ToggleButtons,但它们都有类似的限制。

问题似乎主要与我在网格上使用的 getChildAt() 有关,它在选择另一个按钮时“取消选择”一个按钮或其他任何东西。

是否有解决此问题的方法,或者是否有类似功能的其他建议。垂直滚动、类似网格的格式等...

感谢您的帮助。

编辑:谢谢 Craigy...我确实忘记在那里放一个平台 o.0...我会添加 android。

最佳答案

您是否考虑过使用 Selector ?在不知道 buttonAdapter 如何工作或从中提取它的内容的情况下,您可以使用选择器将任何 View 的背景可绘制对象设置为根据其状态进行更改。

如果您的选择器是这样定义的(当然,假设存在适当的可绘制对象):

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_focused="true"
android:drawable="@drawable/list_item_pressed" />
<item android:state_pressed="true"
android:drawable="@drawable/list_item_pressed" />
<item android:state_selected="true"
android:state_activated="true"
android:drawable="@drawable/list_item_selected" />
<item android:state_activated="true"
android:drawable="@drawable/list_item_selected" />
<item android:state_selected="true"
android:drawable="@android:color/black" />
<item android:drawable="@android:color/transparent" />
</selector>

然后将 GridView 的选择模式设置为单一选择:

<GridView
...
android:choiceMode="singleChoice" />

这让操作系统为您处理一切,记住在列表中选择了哪个位置,然后在您单击另一个位置时为您清除它

关于Android Gridview 和 getChildAt 与 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com