2011-11-30 2 views
2

ListView 행에 다음과 같은 확인란이 있습니다.OnItemClickListener()에서 체크 박스를 선택하는 방법은 무엇입니까?

=========================================== 
[CheckBox] [TextView] [TextView] [TextView] 
=========================================== 

XML 코드는 여기

<CheckBox 
    android:id="@+id/course_search_checkbox" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_centerVertical="true" 
    android:clickable="false" 
    android:focusable="false" /> 

입니다 그리고 클릭 이벤트리스트 뷰에 전달 될 수 있도록 이미 확인란을 클릭하고 포커스하지 만들었습니다.

사용자가 목록보기를 클릭하면 체크 박스를 선택하고 클릭 한 위치를 arraylist에 추가합니다. 그렇다면 ListBox의 OnItemClickListener에서 CheckBox를 체크 표시하려면 어떻게해야합니까?

감사합니다.

답변

5

당신은 당신의 OnItemClickListener 내에서이 코드를 추가 할 수 있습니다

public void onItemClick(AdapterView parent, View view, int position, long id){ 
    CheckBox box = (CheckBox)view.findViewById(R.id.course_search_checkbox); 
    box.setChecked(true); 
} 
+0

감사합니다. – kevin

+2

BTW 목록을 스크롤하면이 코드가 문제가됩니다. 선택을 잃게되거나 잘못 선택되었을 수 있습니다. Android가보기를 재사용하려고합니다. – havexz

+0

예. 그러나 그것을 고치는 방법? – kevin

0

를 잘은 단일 선택 목록은 다음의 경우는 위치/ID를 얻을 수 ListView에서 이러한 API가 필요합니다

getSelectedItemId() 
getSelectedItemPosition() 

그리고 지금을 ListView 용 어댑터를 구현 한 경우. 거기에 bindView, getView 등 (사용하는 어댑터에 따라 다름)과 같은 apis에 대해 위의 apis를 기반으로 체크 된 상태를 설정했습니다. 당신의 ListView에서 API를 아래에 필요한 다중 선택을 위해

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ListView listView = (ListView)parent; // This is the parent view group passed as argument. 
    CheckBox cb = (CheckBox)convertView.findViewById(R.id.check_box); 
    if(getSelectedItemPosition() == position) 
    cb.setChecked(true); 
    else 
    cb.setChecked(true); 
} 

처럼 뭔가 :

getCheckedItemPositions 

(하지만 정확하지 않음) 하나의 선택과 유사합니다 체크 박스를 확인하는 코드입니다.

참고 : 언급 된 코드는 참조 용입니다. 최적화 된 코드가 아닙니다. 확실히 수정이 필요합니다. 참고 :

관련 문제