or
<!DOCTYPE html><html><head> <style>html { font-size: 12px; font-family: Arial, Helvetica, sans-serif; }</style> <title></title> <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.common.min.css" rel="stylesheet" /> <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.default.min.css" rel="stylesheet" /> <link href="http://cdn.kendostatic.com/2014.1.318/styles/kendo.mobile.all.min.css" rel="stylesheet" /> <script src="http://cdn.kendostatic.com/2014.1.318/js/jquery.min.js"></script> <script src="http://cdn.kendostatic.com/2014.1.318/js/kendo.all.min.js"></script></head><body> <div data-role="view" id="flat" data-init="mobileListViewDataBindInitFlat" data-title="ListView" data-layout="databinding"> <ul id="flat-listview"></ul> </div> <div data-role="layout" data-id="databinding"> <header data-role="header"> <div data-role="navbar"> <span data-role="view-title"></span> </div> </header> <div data-role="footer"> <div data-role="tabstrip"> <a href="#flat" data-icon="stop">Flat </div> </div> </div> <script type="text/x-kendo-template" id="customListViewTemplate"> <h3 class="item-title">${name}</h3> <p class="item-info">${foo}</p> </script> <script> var flatData = []; var flatDs; function initData() { for( var i=1; i<21; i++) { flatData.push({ name: "Initial " + i, foo: new Date()}); } } function mobileListViewDataBindInitFlat() { initData(); flatDs = new kendo.data.DataSource({ data: flatData }); $("#flat-listview").kendoMobileListView({ dataSource: flatDs, template: $("#customListViewTemplate").html() }); setTimeout(function() { updateData(); }, 3000 ); } function updateData() { var r = Math.floor((Math.random()*flatData.length)+1); if( r < (flatData.length / 2)) { console.log('update'); flatData[r].foo = new Date(); } else { console.log('insert'); flatData.push({ name: "Inserted " + (flatData.length +1), foo: new Date()}); } flatDs.read(); setTimeout(function() { updateData(); }, 3000 ); } </script> <script> var app = new kendo.mobile.Application(document.body); </script></body></html>