2011-12-06 3 views
0

ListView와 버튼이있는 활동 ("모두 지우기"및 "확인")이 있습니다. "모두 지우기"버튼을 누르면 항목의 선택 상태가 지워집니다. 정상적으로 작동합니다. 내가 항목의 상태를 변경하기 위해 노력하고있어 onItemClick에체크 항목 설정 onItemClick/ListView/

m_list.setItemChecked(pos, false); 

은/<를 선택 -> 선택 취소/복잡한 비즈니스 로직에 따라 달라집니다. Bussines 계층은 두 개 이상의 항목에 대해 확인한 을 결정합니다. 동일한 코드를 입력하려고합니다 :

m_list.setItemChecked(position, bCheck); 

작동하지 않습니다. 데이터 뒤는보기 만 변경됩니다.

"모두 지우기"코드 :

@Override 
public void onClick(View v) 
{ 
    if (v == m_map) 
     GoToMap(); 
    else if (v == m_clear) 
    { 
     for (int i=0; i < m_poiCategories.size();i++) 
     m_list.setItemChecked(pos, false); 
    } 
} 

이 코드는 작동하지 :

m_list.setOnItemClickListener(new OnItemClickListener() 
    { 
    @Override 
    public void onItemClick(AdapterView<?> listView, View selectedItem, int position, long itemId) 
    { 
     boolean b = true; 
     .... 
     m_list.setItemChecked(position, b); 
    } 
}); 

답변

3

당신이 notifyDataSetChanged()는 UI 스레드 때 호출 할 필요가있다보다 ListView들과 함께 작업하는 경우 모든 데이터가 변경됩니다. 그러면 표시되는 항목의 수에 따라 getView() 번을 여러 번 호출하여 UI를 업데이트합니다.

getView()이 올바르게 구현되었는지 확인하십시오.

참조 용으로 다음을 확인하고 이해하는 것이 좋습니다. http://www.youtube.com/watch?v=wDBM6wVEO70