我想使用Gridview并在片段中实现多项选择。
但它显示的错误如The operator ! is undefined for the argument type(s) Object
我不知道如何解决它,有人可以教我怎么做吗?
我的Fragment.java中的代码
private FileListAdapter mFileListAdapter ;
GridView fileListView = (GridView) view.findViewById(R.id.browserList) ;
fileListView.setAdapter(mFileListAdapter) ;
fileListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
ViewTag viewTag = (ViewTag) view.getTag();
mFileListAdapter.changeState(position);
}
}) ;
return view ;
}
FileListAdapter.java中的代码
public class FileListAdapter extends BaseAdapter {
public void changeState(int position) {
if(isMultiSelect) {
imageStatues.put(position, !imageStatues.get(position));
}
notifyDataSetChanged();
}
}
错误The operator ! is undefined for the argument type(s) Object
发生在imageStatues.put(position, !imageStatues.get(position));
有人可以教我如何解决这个问题吗?
提前致谢。
答案 0 :(得分:4)
你可能想要
imageStatues.get(position) != null
或类似的东西。
或者,如果imageStatues.get(position)
应该是Boolean
,那么您可能正在使用原始地图,需要在imageStatues
声明中指定通用参数类型。您也可以尝试将imageStatues.get(position)
投射到Boolean
。
答案 1 :(得分:0)
我引用了一些关于如何使用Gridview的网页。
我将代码从private HashMap imageStatues = new HashMap();
更改为private HashMap<Integer, Boolean> imageStatues = new HashMap<Integer, Boolean>();
它正在发挥作用。
感谢大家的帮助!