2014-01-15 5 views
1

캘린더를 만들 때 사용하는 gridview가 있습니다. 캘린더/그리드 뷰 바깥을 클릭하면 초기 선택을 강조 표시하는 데 문제가 있습니다. 캘린더/그리드 뷰는 뷰의 위쪽 절반을 차지하며 조각에 있으며 해당 목록은 아래로 이동합니다. 다음과 같이 단편 그리드에 대한 나의 레이아웃입니다 : 초기 선택이 녹색외부 위젯을 클릭 할 때 선택 유지

calGrid.requestFocusFromTouch(); 
    calGrid.setSelection(startPosition); 

:

<GridView 
    android:id="@+id/weekGrid" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:listSelector="@color/green" 
    android:numColumns="7" > 
    </GridView> 

초기 셀을 강조하기 위해, 나는 어댑터를 설정 한 후 다음을 사용하여 위치를 설정 바라는대로. 그러나 gridview에서 멀리 클릭하자마자 녹색 배경이 사라집니다. 다른 셀을 선택한 다음 gridview에서 멀리 클릭하면이 문제가 발생하지 않습니다. 이 경우 강조 표시가 유지됩니다. gridview에 onFocusChange 리스너를 설정하려고했습니다. 그러나 gridview 외부를 클릭하면 트리거되지 않습니다. 나는 또한 android : listSelector에서 selector를 사용하여 시도했다.

미리 도움을 주셔서 감사합니다.

답변

1

이 시도 :

교체 :

calGrid.requestFocusFromTouch(); 
calGrid.setSelection(startPosition); 

로 : 당신이 이미지 뷰를 사용하지 않는 경우

((ImageView)calGrid.getChildAt(startPosition)).setSelected(true); 

을 나는 그것이 당신의 문제를 해결해야한다고 생각,에 캐스팅 변경 당신이 사용하고있는 뷰의 종류.

+0

답장을 보내 주셔서 감사합니다. 어댑터 설치를 통해 TextView를 사용하는 동안 : – Jack120

+0

죄송합니다. 내 어댑터는 TextView 및 텍스트 뷰 ID 인 레이아웃을 사용합니다. 위의 명령을 (TextView)와 함께 사용하면 반환되는 항목이 String이라는 클래스 캐스팅 예외가 발생합니다. calGrid.getChildAt (startPosition) .setSelected (true)를 사용하여 시도했지만 행운도 얻지 못했습니다. – Jack120

+0

그래, 약간 엉망이 될 수도 있지만 귀하의 질문을 귀하의 어댑터 코드와 귀하의 textview 레이아웃으로 편집 할 수 있습니까? – TheKingInTheNorth

관련 문제