2013-04-22 37 views
3

中的Griditem我正在创建calendar,我已使用grid view to display the dates in that calendar。现在我想在用户选择每个网格项目时更改每个网格项目的背景。这里的背景会随着用户点击特定日期而发生变化,但之前的项目或日期的背景不会回滚到原始日期?我怎样才能做到这一点? 例如:如果我点击第一个网格视图项目,该项目变成蓝色,当我点击项目2时,项目#2的颜色变成蓝色,但第一项目仍然具有相同的颜色,我不想发生。如何将第一个项目的颜色更改为默认颜色。如何更改另一个网格物品的背景,同时点击在android

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;         
} 
+1

哪种方式要更改的颜色?请发布您的代码。 – 2013-04-22 11:40:17

+0

新的GridView(this).findViewWithTag(tag);您可以将标签设置为位置。保存选定的项目位置,当用户点击其他项目时,只需访问前一项目并更改背景 – Triode 2013-04-22 11:40:55

+0

是三极管,这是我的想法,但它不在这里工作.... – 2013-04-22 11:52:57

回答

1

我认为这是你想要做的。增加这个适配器中:

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(); 

     } 

    });