CAknColumnListBox下标记的使用是相当普遍的一个用法,主要用以在同时选择多个项的时候使用,它的主要实现步骤如下:
1、构造时
iSavedGamesListBox->ConstructL(this,EAknListBoxMarkableList);
使用EAknListBoxMarkableList标志
2、标记,取消标记,标记全部,全部取消功能的实现
case EAknCmdMark: case EAknCmdUnmark: case EAknMarkAll: case EAknUnmarkAll: { iAppContainer->HandleMarkCommandL (aCommand); break; } void CMarkableListContainer::HandleMarkCommandL(TInt aCommand) { if (iSavedGamesListBox) { AknSelectionService::HandleMarkableListProcessCommandL (aCommand, iSavedGamesListBox); } }
也可用另外的方法实现:
void CMarkableListContainer::HandleMarkL() { TInt index=iSavedGamesListBox->CurrentItemIndex(); if(index<0) return; iSavedGamesListBox->View()->SelectItemL(index); } void CMarkableListContainer::HandleUnMarkL() { TInt index=iSavedGamesListBox->CurrentItemIndex(); if(index<0) return; iSavedGamesListBox->View()->DeselectItem(index); } void CMarkableListContainer::HandleMarkAllL() { CTextListBoxModel* model = iSavedGamesListBox->Model(); TInt itemCount = model->NumberOfItems(); CListBoxView* listBoxView = iSavedGamesListBox->View(); for (TUint i = 0; i < itemCount; i++) { listBoxView->SelectItemL(i); } } void CMarkableListContainer::HandleUnMarkAllL() { CTextListBoxModel* model = iSavedGamesListBox->Model(); TInt itemCount = model->NumberOfItems(); CListBoxView* listBoxView = iSavedGamesListBox->View(); for (TUint i = 0; i < itemCount; i++) { listBoxView->DeselectItem(i); } }
反向标记功能实现:
void CMarkableListContainer::HandleMarkCommandOthersL() { CTextListBoxModel* model = iSavedGamesListBox->Model(); TInt itemCount = model->NumberOfItems(); CListBoxView* listBoxView = iSavedGamesListBox->View(); for (TUint i = 0; i < itemCount; i++) { if(listBoxView->ItemIsSelected(i)) { listBoxView->DeselectItem(i); } else { listBoxView->SelectItemL(i); } } }