WEB开发网
开发学院手机开发Symbian 开发 Symbian 列表框开发和可标记列表框开发方法 阅读

Symbian 列表框开发和可标记列表框开发方法

 2010-02-03 16:03:00 来源:WEB开发网   
核心提示:case EEikCmdExit:{Exit();break;}case EMarkListCmdAdd:{TBuf<16> buf;CAknTextQueryDialog* dlg = new(ELeave) CAknTextQueryDialog(buf);if(dlg->ExecuteLD(R_

case EEikCmdExit:

{

Exit();

break;

}

case EMarkListCmdAdd:

{

TBuf<16> buf;

CAknTextQueryDialog* dlg = new(ELeave) CAknTextQueryDialog(buf);

if(dlg->ExecuteLD(R_AVKON_DIALOG_QUERY_VALUE_TEXT))

{

iAppContainer->AddRecordL(buf);

}

break;

}

case EMarkListCmdDelete:

{

iAppContainer->DeleteRecordL();

break;

}

case EAknCmdMark:

case EAknCmdUnmark:

case EAknMarkAll:

case EAknUnmarkAll:

{

iAppContainer->HandleMarkCommandL(aCommand);

break;

}

default:

break;

}

}

其中HandleMarkCommandL(aCommand)是容器类自定义的函数,该函数又把标记命令转交给列表框处理,列表框负责记录用户标记了哪些列表项,并负责显示标记图标。

void CMyMarkListContainer::HandleMarkCommandL(TInt aCommand)

{

AknSelectionService::HandleMarkableListProcessCommandL(aCommand, iListBox);

}

3.批量删除列表项

选择此菜单项则所有被标记的记录项都被删除。这里使用了一个技巧,即逆序删除被标记的列表项,这样可以保证索引数组中的各个索引值的有效性,删除后还有同步更新列表项的索引,必须调用 AknListBoxUtils::HandleItemRemovalAndPositionHightlightL()静态函数来刷新显示。代码如下:

void CMyMarkListContainer::DeleteRecordL()

{

CTextListBoxModel* model = iListBox->Model();

CDesCArray* array = static_cast(model->ItemTextArray());

TInt index = iListBox->CurrentItemIndex();

TBool deleted = iListBox->View()->ItemIsSelected(index);

//下面一句为获取被标记的列表项的索引数组

const CListBoxView::CSelectionIndexArray* selection = iListBox->SelectionIndexes();

上一页  1 2 3 4  下一页

Tags:Symbian 列表 开发

编辑录入:coldstar [复制链接] [打 印]
赞助商链接