Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
btpoole
Channel Surfer

How to get Column Index and Row Index in Markupgrid

Not sure if I am overlooking this in the docs but can't seem to figure out how to get the column index and row index of a selected item in a markupgrid, not the itemfoucsed.   From what I understand the GetIndex() and GetData() doesn't work the same with a markupgrid. Any help appreciated.
0 Kudos
8 REPLIES 8
btpoole
Channel Surfer

Re: How to get Column Index and Row Index in Markupgrid

Surely there's a way to get the column index and row index of a focused item in a markupgrid.
0 Kudos
btpoole
Channel Surfer

Re: How to get Column Index and Row Index in Markupgrid

Anybody??
0 Kudos
Veeta
Visitor

Re: How to get Column Index and Row Index in Markupgrid

Just had a look at the docs and it seemed like something was missing so i tried it out with the SceneGraphXMLTutorial code.

Markupgrid is different from, say, RowList in that it doesn't map 2D data and give 2D indices into that data.  Rather, it takes a linear list of data and it just lays out that linear list on screen by wrapping based on the value of numColumns.

So your row and column would be 

rowFocused = itemFocused \ numColumns
columnFocused = itemFocused MOD numColumns


If you use the sections dividers, i don't have an answer there.  You'd have to account for empty places in the grid as you encountered each section divider.  In that case I would personally use a different component such as RowList.
0 Kudos
btpoole
Channel Surfer

Re: How to get Column Index and Row Index in Markupgrid

"Veeta" wrote:
Just had a look at the docs and it seemed like something was missing so i tried it out with the SceneGraphXMLTutorial code.

Markupgrid is different from, say, RowList in that it doesn't map 2D data and give 2D indices into that data.  Rather, it takes a linear list of data and it just lays out that linear list on screen by wrapping based on the value of numColumns.

So your row and column would be 

rowFocused = itemFocused \ numColumns
columnFocused = itemFocused MOD numColumns


If you use the sections dividers, i don't have an answer there.  You'd have to account for empty places in the grid as you encountered each section divider.  In that case I would personally use a different component such as RowList.

Thanks a ton. Had hoped I was just overlooking something in docs. I was able to figure out the rowFocused calculation but was having a heck of time on the column part. Excuse me for sounding dumb but was is MOD? I don't seem to find that in docs either.
0 Kudos
Veeta
Visitor

Re: How to get Column Index and Row Index in Markupgrid

0 Kudos
btpoole
Channel Surfer

Re: How to get Column Index and Row Index in Markupgrid

Thank you, I thought maybe it was something specific to Brightscript.
0 Kudos
marcelo_cabral
Roku Guru

Re: How to get Column Index and Row Index in Markupgrid

I had a similar issue with MarkupGrid that only returns the index on itemFocused property, even when you have multiple sections.

My solution was to create an index array to easily access later the [section, index].
   contentIndex = []
   for s = 0 to m.top.content.getChildCount() - 1
       for i = 0 to m.top.content.getChild(t).getChildCount() - 1
           contentIndex.Push([s,i])
       next
   next
   m.top.contentIndex = contentIndex

Then on the event to get the focus you just use this way:
            index = m.top.contentIndex[itemFocused]
           focusedContent = m.top.content.getChild(index[0]).getChild(index[1])
0 Kudos
Bhavya
Visitor

Re: How to get Column Index and Row Index in Markupgrid

"marcelo.cabral" wrote:
I had a similar issue with MarkupGrid that only returns the index on itemFocused property, even when you have multiple sections.

My solution was to create an index array to easily access later the [section, index].
   contentIndex = []
   for s = 0 to m.top.content.getChildCount() - 1
       for i = 0 to m.top.content.getChild(t).getChildCount() - 1
           contentIndex.Push([s,i])
       next
   next
   m.top.contentIndex = contentIndex

Then on the event to get the focus you just use this way:
            index = m.top.contentIndex[itemFocused]
           focusedContent = m.top.content.getChild(index[0]).getChild(index[1])


Great man. Thanks alot. your solution worked.
0 Kudos