As I said above: Row colors should not be set at the time of clicking on it, and at the moment of creating a row!
Look at this easy sample especially on the line 32 - 42:
local widget = require( "widget" ) local function onRowRender( event ) local phase = event.phase local row = event.row local rowTitle = display.newText( row, "Row " .. row.index, 0, 0, nil, 30 ) rowTitle.x = rowTitle.width / 2 + 25 rowTitle.y = row.contentHeight \* 0.5 rowTitle:setTextColor( 0, 0, 0 ) end local function onRowTouch( event ) local phase = event.phase if "press" == phase then print( "Touched row:", event.target.index ) end end local tableView = widget.newTableView { top = 100, width = W, height = H, maskFile = "assets/mask-320x366.png", listener = tableViewListener, onRowRender = onRowRender, onRowTouch = onRowTouch, } for i = 1, 20 do tableView:insertRow { rowHeight = 75, rowColor = { default = { 232, 232, 232 }, over = {255, 100, 100} -- color on click }, lineColor = { 100, 100, 100 }, } end