我创建了名为Color的自定义视图。我使用 Color 对象来填充 GridView(同样的问题也出现在 ListView 中)。
我的任务是让用户选择一种颜色并突出显示它。
以前我做过类似的事情,但我只用于构建小部件并且一切正常。这次我用自己的。
此 cos 用于单击项目:
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int color = (int)id;
Log.d(TAG, "Selected color: " + id);
view.setSelected(true);
view.invalidate();
}
颜色.onDraw:
@Override
public void onDraw(Canvas canvas) {
if (isSelected()) {
Log.d(TAG, "color draw selected");
} else {
Log.d(TAG, "not selected " + color);
}
}
我也设置setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);
为这个 GridView (AbsListView.CHOICE_MODE_MULTIPLE
也不要帮助)
在日志中我看到:
Selected color: 8355711
not selected 16711680
not selected 16743680
not selected 8355711
我敢肯定,颜色项目并没有按时重新创建。
我尝试将 GridView 更改为 ListView,用户默认小部件(仅覆盖 onDraw())。没有什么帮助。也许我忘记了什么?
在我看来,GridView 以某种方式放弃了选定的状态。
如果您需要更多信息,请告诉。
添加:
我用调试器检查过。颜色为 8355711 的视图在两个函数中是相同的对象。
我使用了 setOnItemSelectedListener(this); 跟踪项目选择。但是在这个监听器中什么也没有发生。