2011-07-05 3 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은 불행히도 터치 모드에서 작동하지 않습니다. Get childAt는 괜찮은 것처럼 보이지만 모든 gridview가 아닌이 뷰만을 업데이트하는 방법이 있습니까? – grunk

+0

View.invalidate() (UI 스레드) 또는 View.postInvalidate() (UI 스레드가 아닌 스레드)를 호출하여 하나의보기 만 업데이트하십시오. – xevincent

관련 문제