Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 无法更改gridview上选中/取消选中项目的颜色_Android_Android Listview_Android Gridview - Fatal编程技术网

Android 无法更改gridview上选中/取消选中项目的颜色

Android 无法更改gridview上选中/取消选中项目的颜色,android,android-listview,android-gridview,Android,Android Listview,Android Gridview,我编写了以下代码: gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if (position == 0) { gridview.setItemCh

我编写了以下代码:

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        if (position == 0) {

            gridview.setItemChecked(1, false);
            gridview.setItemChecked(2, false);

            TextView tv = (TextView) view.findViewById(R.id.indian_size);

            tv.setBackgroundColor(Color.parseColor("#FF9AD082"));

            tv.setTextColor(Color.BLUE);

        }
        if (position == 1 || position == 2 ) {

            gridview.setItemChecked(0, false);

            TextView tv = (TextView) view.findViewById(R.id.indian_size);

            tv.setBackgroundColor(Color.parseColor("#FF9AD082"));


            tv.setTextColor(Color.BLUE);


        }

    }
});
gridview.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图、整型位置、长id){
如果(位置==0){
setItemChecked(1,false);
setItemChecked(2,false);
TextView tv=(TextView)view.findViewById(R.id.indian_size);
tv.setBackgroundColor(Color.parseColor(#FF9AD082”);
tv.setTextColor(Color.BLUE);
}
如果(位置==1 | |位置==2){
gridview.setItemChecked(0,false);
TextView tv=(TextView)view.findViewById(R.id.indian_size);
tv.setBackgroundColor(Color.parseColor(#FF9AD082”);
tv.setTextColor(Color.BLUE);
}
}
});
当我在
0
位置单击项目时,它会更改颜色,并且它也适用于
1
2
位置

但是现在我想当我点击position
1
2
时,我需要清除position
0的文本颜色和背景颜色,反之亦然


如何实现这一点?

通过调用
getCheckedItemPositions()
确定是否已检查该项:


如果我选择了位置
0
处的项目,并且选择了位置
1
处的项目,那么我需要在位置
0
处清除项目的颜色,或者在我编写此代码的位置
gridview setOnItemClickListener中将其设置为默认值?用if-else语句?
SparseBooleanArray checkedPositions = gridView.getCheckedItemPositions();
if (checkedPositions != null && checkedPositions.get(position)) {
  // Position is already checked, un-check it
} else {
  // Position is un-checked, check it
}