victor
发布于

动态列表设置选择项高亮

inonegui 系统设计采用 UI 与数据分离架构,所以对于动态列表其选择项由用户层来记忆 index,处理动态列表高亮功能,需要处理如下几个几步:

  1. 记忆用户选择的 index 数据;
  2. 通知重画旧选择项和新选择项数据;
  3. 根据 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;
}
浏览 (284) 点赞 (1) 收藏 分享
评论