Hello Corona Developers!
I am in need of code help with creating a Tableview from remote JSON data.
This will be a paid quick code project that i will pay via Paypal.
Please contact me at: tom@lvlapps.com
Here is what i need modified…
I have a JSON data table online, i need to download that info into Corona, then, create/populate a tableview with specified key/items from the data to show.
I need the item (ex: first item is “1046”) along with “message” value to show in the tableview.
Here is the data contained in the json file:
{ "1046":{"date":"September 08, 18","message":"test","pin":"9117","recipient":"test","status":"sent"}, "1048":{"date":"September 03, 18","message":"another testing for the srver.","pin":"1300","recipient":"Usertest", "status":"sent"}, "1057":{"date":"September 05, 18","message":"test","pin":"1097","recipient":"test","status":"sent"}, "1059":{"date":"September 1, 18","message":"testeeec","pin":"2845","recipient":"testet","status":"sent"}, "1060":{"date":"September 03, 18","message":"dfdsfafda","pin":"7303","recipient":"fred","status":"sent"}, "1061":{"date":"September 09, 18","message":"Test","pin":"1010","recipient":"Tester","status":"sent"} }
and here is the code i have so far. alot of the functionality already works so there wont be too much new code to add.
--SETUP THE TABLEVIEW!!!!! function createTable() local ox, oy = math.abs(display.screenOriginX), math.abs(display.screenOriginY) -- Set color variables depending on theme local tableViewColors = { rowColor = { default = { 60/255, 60/255, 200/255 }, over = { 60/255, 60/255, 250/255 }}, lineColor = { 255/255 }, catColor = { default = { 80/255, 80/255, 255/255, 0.9 }, over = { 80/255, 80/255, 80/255, 0.9 } }, defaultLabelColor = { 1, 1, 1, 1 }, catLabelColor = { 1 } local tableView -- Text to show which item we selected local itemSelected = display.newText( "User selected: ", 0, 0, native.systemFont, 22 ) itemSelected:setFillColor( unpack(tableViewColors.catLabelColor) ) itemSelected.x = display.contentWidth+itemSelected.contentWidth itemSelected.y = display.contentCenterY sceneGroup:insert( itemSelected ) -- Function to return to the tableView local function goBack( event ) transition.to( tableView, { x=display.contentWidth\*0.5, time=600, transition=easing.outQuint } ) transition.to( itemSelected, { x=display.contentWidth+itemSelected.contentWidth, time=600, transition=easing.outQuint } ) transition.to( event.target, { x=display.contentWidth+event.target.contentWidth, time=480, transition=easing.outQuint } ) end -- Back button local backButton = widget.newButton { width = 128, height = 60, label = "Back To Tableview", onRelease = goBack } backButton.x = display.contentWidth+backButton.contentWidth backButton.y = itemSelected.y+itemSelected.contentHeight+16 sceneGroup:insert( backButton ) -- Listen for tableView events local function tableViewListener( event ) local phase = event.phase --print( "Event.phase is:", event.phase ) end ----- Handle row rendering function onRowRender( event ) local phase = event.phase local row = event.row local groupContentHeight = row.contentHeight local message = display.newText( row, "Message: " .. row.index, 0, 0, "LeagueGothic", 28 ) message.x = 10 message.anchorX = 0 message.y = 25 message:setFillColor( unpack(row.params.defaultLabelColor) ) end -- Handle row updates local function onRowUpdate( event ) local phase = event.phase local row = event.row --print( row.index, ": is now onscreen" ) end -- Handle touches on the row local function onRowTouch( event ) local phase = event.phase local row = event.target if ( "release" == phase ) or ( "tap" == phase )then itemSelected.text = "User selected: " .. row.index transition.to( tableView, { x=((display.contentWidth/2)+ox+ox)\*-1, time=600, transition=easing.outQuint } ) transition.to( itemSelected, { x=display.contentCenterX, time=600, transition=easing.outQuint } ) transition.to( backButton, { x=display.contentCenterX, time=750, transition=easing.outQuint } ) end end -------- Create a tableView --------------------- tableView = widget.newTableView { top = 180-oy, left = -ox, width = display.contentWidth+ox+ox, height = 420, hideBackground = true, listener = tableViewListener, onRowRender = onRowRender, onRowUpdate = onRowUpdate, onRowTouch = onRowTouch, } sceneGroup:insert( tableView ) -- Create Rows for k, v in pairs(user) do local isCategory = false local rowHeight = 80 local rowColor = { default = tableViewColors.rowColor.default, over = tableViewColors.rowColor.over, } -- Insert the row into the tableView tableView:insertRow { isCategory = isCategory, rowHeight = rowHeight, rowColor = rowColor, lineColor = tableViewColors.lineColor, params = { defaultLabelColor=tableViewColors.defaultLabelColor, catLabelColor=tableViewColors.catLabelColor } } end end --createTable() --DOWNLOAD THE DATA!!!!! local jsonFile = function( filename, base ) if not base then base = system.ResourceDirectory; end local path = system.pathForFile( filename, base ) local contents -- io.open opens a file at path. returns nil if no file found local file = io.open( path, "r" ) if file then -- read all contents of file into a string contents = file:read( "\*a" ) io.close( file ) -- close the file after using it end return contents end function networkListener( event ) if ( event.isError ) then print( "Network error!") else user = json.decode( event.response ) -- Go through the array in a loop for k, v in pairs(user) do print("Message ID: "..k) end timer.performWithDelay( 2000, createTable ) end end local json\_file\_by\_get = jsonFile( network.request( "https://linktothejsonfile......", "GET", networkListener ) )
Please let me know if you can fix this and we’ll discuss pricing/pay!