我正在创建一个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();

        }

    });

09-28 04:48