2011-07-05 91 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

相關問題