在测试的时候用的是CAknDoubleStyleListBox列表
首先,在构造列表的时候,添加EAknListBoxMarkableList:
iListBox->ConstructL(this, EAknListBoxMarkableList);
或者不要这一句,直接在rss文件里面:
RESOURCE LISTBOX R_CONTACT_LIST_BOX_LIST_BOX
{
flags = EAknListBoxMarkableList;
}
其次:
添加列表标记图标
void CListtoListBox::SetupListBoxIconsL()
{
_LIT(KmlFile,"z://resource//apps//MultiViews.mbm");
CEikonEnv* eikonEnv = CEikonEnv::Static();
TFileName mbmFile(KmlFile);
CArrayPtr<CGulIcon>* icons = new (ELeave) CAknIconArray(3);
CleanupStack::PushL(icons);
icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMultiviewsList_icon,
EMbmMultiviewsList_icon_mask));
// icons->AppendL(eikonEnv->CreateIconL(mbmFile, EMbmMarklistStar, EMbmMarklistStarmask));
CleanupStack::Pop(icons);
iListBox->ItemDrawer()->FormattedCellData()->SetIconArray(icons);
if (icons != NULL)
{
iListBox->ItemDrawer()->ColumnData()->SetIconArray(icons);
}
}
最后:
添加列表标记相关的菜单,
在菜单中添加
.....
MENU_TITLE
{
menu_pane = R_AVKON_MENUPANE_MARKABLE_LIST;
}
.....
处理一下菜单命令
case EAknCmdMark:
case EAknCmdUnmark:
case EAknMarkAll:
case EAknUnmarkAll:
{
iappContainer->HandleMarkCommandL(aCommand); //转交给容器控件
break;
}
即可。
另:
const CListBoxView::CSelectionIndexArray* selection =
iListBox->SelectionIndexes();
可以获得被标记项的index值的数组。