Android 开发问题:android.view.View is not a view that can be bounds by this SimpleAdapter ColorPickerDialog.javapublicclassColorPickerDialogextendsDialog{...OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);...// 定义颜色数组int[]colors{Color.BLACK,Color.DKGRAY,Color.GRAY,Color.LTGRAY,Color.WHITE,Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW,Color.CYAN,Color.MAGENTA,Color.parseColor(#FF5722),Color.parseColor(#9C27B0),Color.parseColor(#673AB7),Color.parseColor(#3F51B5),Color.parseColor(#2196F3),Color.parseColor(#03A9F4),Color.parseColor(#00BCD4),Color.parseColor(#009688),Color.parseColor(#4CAF50),Color.parseColor(#8BC34A),Color.parseColor(#CDDC39),Color.parseColor(#FFEB3B),Color.parseColor(#FFC107),Color.parseColor(#FF9800),Color.parseColor(#FF5722)};ListMapString,IntegercolorListnewArrayList();for(intcolor:colors){MapString,IntegermapnewHashMap();map.put(color,color);colorList.add(map);}SimpleAdaptersimpleAdapternewSimpleAdapter(getContext(),colorList,R.layout.color_item,newString[]{color},newint[]{R.id.color_view});...}}color_item.xml?xml version1.0 encodingutf-8?Viewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/color_viewandroid:layout_width40dpandroid:layout_height40dpandroid:backgroundandroid:color/black/在 Android 开发中运行上述代码出现如下错误信息java.lang.IllegalStateException: android.view.View is not a view that can be bounds by this SimpleAdapter# 解读 java.lang.IllegalStateException: android.view.View 不是一个可以被此 SimpleAdapter 绑定的视图问题原因SimpleAdapter 用于自动将数据绑定到特定的视图上例如TextView、ImageView上述代码中给 SimpleAdapter 的 to 参数中指定R.id.color_view时SimpleAdapter 会尝试找到这个 ID 对应的视图然后SimpleAdapter 调用这个视图的特定方法来设置数据例如如果是 TextView就调用 setText 方法如果是 ImageView就调用 setImageResource 方法等但是普通的 View 没有这些设置数据的方法无法接收和处理通过 SimpleAdapter 传递过来的数据处理策略color_item.xml将 View 替换为 ImageView?xml version1.0 encodingutf-8?ImageViewxmlns:androidhttp://schemas.android.com/apk/res/androidandroid:idid/color_viewandroid:layout_width40dpandroid:layout_height40dp/ColorPickerDialog.java重写 setViewImage 方法将对于 ImageView 默认调用 setImageResource 方法的逻辑重写为调用 setBackgroundColor 方法publicclassColorPickerDialogextendsDialog{...OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);...// 定义颜色数组int[]colors{Color.BLACK,Color.DKGRAY,Color.GRAY,Color.LTGRAY,Color.WHITE,Color.RED,Color.GREEN,Color.BLUE,Color.YELLOW,Color.CYAN,Color.MAGENTA,Color.parseColor(#FF5722),Color.parseColor(#9C27B0),Color.parseColor(#673AB7),Color.parseColor(#3F51B5),Color.parseColor(#2196F3),Color.parseColor(#03A9F4),Color.parseColor(#00BCD4),Color.parseColor(#009688),Color.parseColor(#4CAF50),Color.parseColor(#8BC34A),Color.parseColor(#CDDC39),Color.parseColor(#FFEB3B),Color.parseColor(#FFC107),Color.parseColor(#FF9800),Color.parseColor(#FF5722)};ListMapString,IntegercolorListnewArrayList();for(intcolor:colors){MapString,IntegermapnewHashMap();map.put(color,color);colorList.add(map);}SimpleAdaptersimpleAdapternewSimpleAdapter(getContext(),colorList,R.layout.color_item,newString[]{color},newint[]{R.id.color_view}){OverridepublicvoidsetViewImage(ImageViewv,intvalue){v.setBackgroundColor(value);}};...}}