动态列表设置选择项高亮
inonegui 系统设计采用 UI 与数据分离架构,所以对于动态列表其选择项由用户层来记忆 index,处理动态列表高亮功能,需要处理如下几个几步:
- 记忆用户选择的 index 数据;
- 通知重画旧选择项和新选择项数据;
- 根据 index 重新构建旧选择项和新选择项数据;
记忆用户选择的 index 数据;
通知重画旧选择项和新选择项数据
INT iselectedindex = -1;
VOID MainCtrl::ListItem1_ListItemClick(InoListItem *pControl, INT iIndex, BOOL bLongClick)
{
if (iselectedindex != iIndex){
INT ioselectedindex = iselectedindex;
//记忆用户选择的index数据
iselectedindex = iIndex;
//通知重画旧选择项和新选择项数据
UserNotifyDataChanged(mpList1, mpListItem1, ioselectedindex);
UserNotifyDataChanged(mpList1, mpListItem1, iIndex);
}
}
根据 index 重新构建旧选择项和新选择项数据
INT MainCtrl::List1_BuildListItemData(InoScrollList *pControl, InoListItem *pListItem, INT iIndex)
{
//根据index重新构建旧选择项和新选择项数据,设置选择状态
if (iselectedindex != -1 && iselectedindex == iIndex)
{
pListItem->SetSelected(TRUE);
}
else
{
pListItem->SetSelected(FALSE);
}
pListItem->SetText("ITEM " + InoToString(iIndex));
return ERR_OK;
}