我正在创建一个calendar
,我已经使用了grid view to display the dates in that calendar
。现在我想在用户选择每个网格项时更改每个网格项的背景。在这里,当用户单击某个特定日期时,背景会发生变化,但以前的项目或日期的背景不会回滚到原来的项目或日期?我怎样才能做到这一点?
例如:如果我单击第一个网格视图项,则该项将变为蓝色,当我单击项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();
}
});