Android 如何使用onItemSelectedListener更改视图的颜色

Android 如何使用onItemSelectedListener更改视图的颜色,android,android-layout,Android,Android Layout,我似乎无法确定如何使onItemSelectedListender界面正常工作。我想更改所选项目的颜色,然后在取消选择后将其更改回原来的颜色。我已经读了一些书,不久前我还用onItemSelectedListener做了类似的事情 我的代码是 libraryGrid.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSel

我似乎无法确定如何使onItemSelectedListender界面正常工作。我想更改所选项目的颜色,然后在取消选择后将其更改回原来的颜色。我已经读了一些书,不久前我还用onItemSelectedListener做了类似的事情

我的代码是

libraryGrid.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

            //I want to change the color of the view that was just selected
            view.setBackgroundColor(Color.GRAY);
            adapterView.getSelectedView().setBackgroundColor(Color.YELLOW);

        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
            //How do I access the view that was just unselected to change it's color?
            adapterView.setBackgroundColor(Color.BLACK);
        }
    });
libraryGrid.setOnItemSelectedListener(新的AdapterView.OnItemSelectedListener(){
@凌驾
已选择公共视图(AdapterView AdapterView、View视图、int i、long l){
//我想更改刚刚选定的视图的颜色
视图.背景颜色(颜色.灰色);
adapterView.getSelectedView().setBackgroundColor(Color.YELLOW);
}
@凌驾
未选择公共无效(AdapterView AdapterView){
//如何访问刚刚未选中的视图以更改其颜色?
adapterView.setBackgroundColor(颜色:黑色);
}
});

您可以跟踪所选项目,并从getView方法更改该项目的背景

这样试试看

libraryGrid.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {

             mSelectedItem = position;
                mAdapter.notifyDataSetChanged();


        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

谢谢你的回复。我有一个文本视图的网格视图。结果表明,点击文本视图并不被视为选择。所以在我的例子中,我需要使用onItemClickListener而不是onItemSelectedListener,在这种情况下,我需要像你说的那样记录状态。setbackgroundcolor上的CheeserSlll值异常。为什么?
   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final View view = View.inflate(context, R.layout.item_list, null);

        if (position == mSelectedItem) {
            //set Selected color as background on view
        }
        else{
           //set unSelected color as background on View
        }

        return view;
    }