可标记列表 笔记

Symbian UIQ 列表框标记功能实现
本文介绍如何在Symbian UIQ系统中使用CAknDoubleStyleListBox实现列表项标记功能,包括构造列表、设置标记图标及处理相关菜单命令的方法。

在测试的时候用的是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值的数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值