运营商 !是否未定义参数类型对象?

时间:2013-12-31 03:00:36

标签: java android gridview undefined

我想使用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));

有人可以教我如何解决这个问题吗?

提前致谢。

2 个答案:

答案 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>();

它正在发挥作用。

感谢大家的帮助!