2011-11-30 4 views
2

ListView를 MULTIPLE_CHOICE과 함께 사용하고 있으며 선택한 항목을 다시 얻으려면 setItemChecked() 메서드를 사용하고 있습니다.setItemChecked()에 의해 체크 된 항목의 선택을 취소 하시겠습니까?

이전에 확인한 항목을 볼 수 있으므로 제대로 작동합니다. 문제는 내가 일 이전 항목을 선택 취소 한 다음 배열 아직도 내가 선택하지 않은 항목이 있습니다 custList.getCheckItemIds() 에 의해 확인 항목의 목록을 얻을 경우이다.

누군가가 그 일이 일어나기로되어 있는지 또는 내가 놓친 것이 있는지 알려주실 수 있습니까?

답변

1

여기서 setOnCheckedChangeListener를 호출해야하며이 수신기 블록 내부의 코드를 관리해야합니다. 당신은 단순히 항목이 주어진 시간에 선택되어 있는지 알아 내려 할

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       // Write and manage your code here. 
     } 
}); 
+1

사용자 정의 레이아웃을 사용하지 않아 CheckBox 객체를 어떻게 얻을 수 있는지 잘 모르겠습니다. 다음은 코드 스 니펫입니다. 'custList = (ListView) findViewById (R.id.custList); \t \t \t custList.setChoiceMode (ListView.CHOICE_MODE_MULTIPLE); // 목록을 채울 배열 어댑터는 // 다중 선택 목록에 android layout을 사용합니다. adaptCust = new ArrayAdapter (this, android.R.layout.simple_list_item_multiple_choice, customers); \t \t custList.setAdapter (adaptCust); ' – vishpoison

0

, 당신리스트 뷰에서 SparseBooleanArray을 얻고, for 루프로 반복 할 수 있습니다.

SparseBooleanArray checked = list.getCheckedItemPositions(); 

for (int i = 0; i < checked.size(); i++){ 
    if (checked.get(i)) 
     //the item at index i is checked, do something 
    else 
     //the item is not checked, do something else 
} 
0

이 :

SparseBooleanArray checked = list.getCheckedItemPositions(); 

for (int i = 0; i < checked.size(); i++){ 
    if (checked.get(i)) 
     //the item at index i is checked, do something 
    else 
     //the item is not checked, do something else 
} 

넣은 사람은 아니다 일 예를 들면.

확인해야

Multiple Contact Picker List [getCheckedItemPositions()]을 따르십시오.

SparseBooleanArray selectedPositions = listView.getCheckedItemPositions(); 

for (int i=0; i<selectedPositions.size(); i++) { 
    if (selectedPositions.get(selectedPositions.keyAt(i)) == true) { 
     //do stuff 
    } 
}