1.在phoneGap中将原生程序对象传递到html中,关键源码如下:
super.loadUrl("file:///android_asset/www/js/hotel.html",3000);
this.appView.addJavascriptInterface(new MytabCursor(new MyDatabaseHelper(getApplicationContext()).getReadableDatabase()), "dataofsqlite") ;//前一个参数不可用实例对象。
2.在sencha souch中调用对象中的方法,方法返回值为Json字符串,将其存入Sencha touch Store中,关键源码如下:
var bookStore=Ext.create('Ext.data.Store',{
model:'Hotel',
autoLoad:false,
pageSize:5,
data:dataofsqlite.findJson(),//此为调用的Java原生程序方法,返回值为Json字符串
proxy: {
type: 'memory',//代理设置为memory
reader: {
type: 'json',
rootProperty: 'hotels'
}
}
});
3.滑动分页实现,关键源码如下:
var List=Ext.create('Ext.List',{
store:bookStore,
itemTpl:bookTemplate,
items:[toolBar],
autoPaging:true,
plugins: [
{//此块无用,关键在下一块
xclass: 'Ext.plugin.ListPaging',
autoPaging: true,
loadMoreText:'下拉加载',
refreshFn:function(){
Ext.Msg.alert("下拉!") ;
}
},
{//事件为拉上方
xclass: 'Ext.plugin.PullRefresh',
pullRefreshText: 'Pull down for more new Tweets!',
releaseRefreshText:'正在刷新...',
refreshFn: function(loaded,arguments){
/* do something */
page ++ ;//数字变量,为当前页加一,而后通过下方调用Java源码放回Json字符串
List.getStore().loadData(JSON.parse(dataofsqlite.findNumberJson(page,5)),true) ;//划线处参数需要是Json对象,后一参数true/false决定是否添加数据到前端。
List.refresh() ;
}
}],
emptyText:'没有数据',
baseCls:'Book',
selectedCls:'selected',
listeners : {
itemdoubletap : function(dataview, index, item, record,
e) {
sessionStorage.setItem("id", bookStore.getAt(index)
.get('id'));
window.location.href = "hotel_detial.html";
}
}
});
效果: