我在构建项目时收到此消息:
... \ listadapter \ MyAdapter.java:
使用未经检查或不安全的操作。
使用-Xlint重新编译:取消选中以获取详细信息。
对于这行代码,会发生这种情况:
@Override
protected void publishResults(CharSequence constraint, FilterResults results) {
beanList = (ArrayList<Bean>) results.values;
notifyDataSetChanged();
}
我不知道该怎么做。
那是因为您正在转换为泛型类型,并且编译器不知道此转换是否合法。如果你的results.values
不是ArrayList的一个实例,那么这行代码将因ClastCastException而失败。但是如果是的话,编译器会抛出值,但它无法检查泛型参数的类型,如果你的变量包含带有字符串的ArrayList,你的代码行不会失败,但它会在另一个,您正在从列表中读取。如果您100%确定它将是Bean的ArrayList,您可以禁止此警告(通过使用@SupressWarnings("unchecked")
注释方法)
您可以尝试使用try catch方法捕获Excepcion,或者您可以为此问题创建一个新的Excepion,因为您可以创建一个扩展Exception的类,您可以在这里阅读更多相关信息:How to creat a custom Exception。