2011-07-05 95 views
8

我正在使用网格视图来显示月份日历。当我在日历上触摸日期时,通过更改背景和文本颜色突出显示相应的单元格。一切都像魅力一样,除非我选择一个新的日期,我无法取消选中一个单元格。GridView:按位置获取视图

当我点击日期我记得的位置,所以,当我选择了一个新的,我知道,我以前点击:

protected OnClickListener onClicThisMonthDate(final int position) 
{ 
    return new OnClickListener() { 

     @Override 
     public void onClick(View v) 
     { 
      if(prevDateSelected > -1) 
      { 
       //Get the view by the oldPosition 
       //Change its background and text color 
      } 
      prevDateSelected = position; 
      TextView casecal = (TextView) v.findViewById(R.id.case_cal); 
      casecal.setBackgroundColor(Color.rgb(93, 94, 94)); 
      casecal.setTextColor(Color.WHITE); 
     } 
    }; 
} 

是否有解决方案得到通过他的位置的看法?选择一个单元并取消选择所有其他单元的最有效方法是什么? 注意:通过“选择一个单元格”我的意思是突出显示它,通过改变它的风格。

回答

17

ViewGroup.getChildAt返回组中指定位置的视图。

GridView.setSelection选择该位置的视图并取消选择其他视图。

+1

不幸的是,GridView.setSelection不能在触摸模式下工作。获取childAt似乎没问题,但有没有办法只更新这个视图,而不是所有的gridview? – grunk

+0

调用View.invalidate()(来自UI线程)或View.postInvalidate()(来自非UI线程)来更新一个视图。 – xevincent

相关问题