请教一个searchField的问题
正常我们建立一个查找面板,然后跟ListBox绑定就可以实现查找功能(代码如下)
CAknSingleStyleListBox* iListBox;
CAknSearchField* iSearchField;
iSearchField-> SetSearchTextL(buf);
CAknFilteredTextListBoxModel* model = static_cast <CAknFilteredTextListBoxModel*> ( iListBox-> Model() );
model-> Filter()-> HandleItemArrayChangeL();
我现在我想问的是:如果我不建立查找面板,有没有其它方式可以实现iSearchField-> SetSearchTextL(buf)的功能?
CAknFilteredTextListBoxModel里面有实现这个的方法吗?
[解决办法]
可以,说说我的思路,仅供参考:
1,创建候选队列CArrayFixFlat<TClass> *iArray;
2,定义你的TBool match(TClass,TDes&);函数
3,定义TBuf<64>iBuf,在OfferKeyEventL接受用户输入.
4,然后进入以下的操作:
CColumnListBoxItemDrawer *ItemDrawer=iListBox->ItemDrawer();
CDesCArray *TextArray = STATIC_CAST(CDesCArray*, iListBox->Model()->ItemTextArray());
TextArray->Reset();
for(i=0;i<iArray->Count();i++){
if(match((*iArray[i]),iBuf){
TextArray-Append(...);
}
}
iListBox->HandleItemAdditionL();