如何在android中单击Griditem时更改另一个Griditem的背景

如何在android中单击Griditem时更改另一个Griditem的背景,android,resources,calendar,Android,Resources,Calendar,我正在创建一个日历,我使用了网格视图来显示该日历中的日期。现在我想在用户选择每个网格项时更改每个网格项的背景。在这里,背景会随着用户单击某个特定日期而改变,但以前的项目或日期背景不会回滚到原始日期?我怎样才能做到这一点? 例如:如果我单击第一个网格视图项目,该项目将变为蓝色,当我单击项目2时,项目#2的颜色将变为蓝色,但第一个项目保持相同的颜色,这是我不希望发生的。如何将第一项颜色更改为默认颜色 if(cur_posn == 0){ cur_posn = position; old_

我正在创建一个
日历
,我使用了
网格视图来显示该日历中的日期
。现在我想在用户选择每个网格项时更改每个网格项的背景。在这里,背景会随着用户单击某个特定日期而改变,但以前的项目或日期背景不会回滚到原始日期?我怎样才能做到这一点? 例如:如果我单击第一个网格视图项目,该项目将变为蓝色,当我单击项目2时,项目#2的颜色将变为蓝色,但第一个项目保持相同的颜色,这是我不希望发生的。如何将第一项颜色更改为默认颜色

if(cur_posn == 0){
   cur_posn = position;
   old_posn = position;
   v.setBackgroundResource(R.drawable.calendar_tile_green);
} 
else {
   cur_posn = position;
   parent.getChildAt(old_posn).setBackgroundResource(R.drawable.calendar_tile_small);
   v.setBackgroundResource(R.drawable.calendar_tile_green);                                                     
   old_posn = cur_posn;                                 
}

我想这就是你想要做的。在适配器中添加以下内容:

private int clickedChildPosition;

public void setClickedChildPosition(int newClickedChildPosition){
    this.clickedChildPosition=newClickedChildPosition;
}

public View getView(int position, View convertView, ViewGroup parent) {
//Other things like setTag and getTag goes in here
    if(position==clickedChildPosition)
        v.setBackgroundResource(R.drawable.calendar_tile_green);
    else
        v.setBackgroundResource(R.drawable.calendar_tile_default);
}
在使用该适配器调用的活动中:

gridView.setOnItemClickListener(new OnItemClickListener(){

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position,
                long id) {
            adapter.setClickedChildPosition(position);
            adapter.notifyDataSetChanged();

        }

    });
gridView.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
适配器。设置ClickedChildPosition(位置);
adapter.notifyDataSetChanged();
}
});

您以哪种方式更改颜色?请发布您的代码。新建GridView(this)。findViewWithTag(tag);可以将标记设置为位置。保存所选项目的位置,当用户单击其他项目时,只需访问上一个项目并更改背景是的三极管,这是我的想法,但在这里不起作用。。。。