【问题标题】:Pull to refresh in Titanium for Android在 Titanium for Android 中拉动刷新
【发布时间】:2012-12-31 12:21:58
【问题描述】:

如何拉取刷新?

在 Titanium appcelerator 中,我需要在 tableview 中显示内容列表。如果我拉视图,它需要更新。在 iPhone 中我完成了,但在 Android 中它不起作用。请任何人帮助解决Android中的这个问题。

我的安卓代码:-

tableView.addEventListener('scroll',function(e)
{
   var offset = e.contentOffset.y;
   if (offset < -65.0 && !pulling && !reloading)
   {
       var t = Ti.UI.create2DMatrix();
       t = t.rotate(-180);
       pulling = true;
       arrow.animate({transform:t,duration:180});
       statusLabel.text = "Release to refresh...";
   }
   else if((offset > -65.0 && offset < 0 ) && pulling && !reloading)
   {
       pulling = false;
       var t = Ti.UI.create2DMatrix();
       arrow.animate({transform:t,duration:180});
       statusLabel.text = "Pull down to refresh...";
   }    
});

tableView.addEventListener('dragEnd', function(e)
{

   if(pulling && !reloading)
   {
       reloading = true;
       pulling = false;
       arrow.hide();
       actInd.show();
       statusLabel.text = "Reloading...";
       tableView.setContentInsets({top:60},{animated:true});
       tableView.scrollToTop(-60,true);
       arrow.transform=Ti.UI.create2DMatrix();
       beginReloading();
   }
});

【问题讨论】:

  • 嘿,你知道了吗??

标签: android titanium appcelerator


【解决方案1】:

Titanium 现在支持使用 Titanium.UI.TableView、Titanium.UI.ListView 或 Titanium.UI.ScrollView 对象为 Android (> v6.2.0) 和 iOS (>3.2.0) 拉刷新。

查看文档:

来自文档的示例代码:

var win = Ti.UI.createWindow({
    fullscreen:true
});
var counter = 0;

function genData() {
    var data = [];
    for (var i=1; i<=3; i++) {
        data.push({properties:{title:'ROW '+(counter+i)}})
    }
    counter += 3;
    return data;
}

var section = Ti.UI.createListSection();
section.setItems(genData());

var control = Ti.UI.createRefreshControl({
    tintColor:'red'
})

var listView = Ti.UI.createListView({
    sections:[section],
    refreshControl:control
});

control.addEventListener('refreshstart',function(e){
    Ti.API.info('refreshstart');
    setTimeout(function(){
        Ti.API.debug('Timeout');
        section.appendItems(genData());
        control.endRefreshing();
    }, 2000);
})

win.add(listView);
win.open();

【讨论】:

    【解决方案2】:

    这只是 Kitchen Sink 示例中的 IOS 代码吗?

    有几次尝试让这个在 Android 上运行,但我还没有确认它们中的任何一个都能按预期工作。据我了解,问题在于您无法在 Android 中以与在 IOS 中相同的方式获得偏移量。

    通过 Google 快速搜索找到了此链接,该链接引用自 Appcelerator 官方论坛。 https://gist.github.com/903895

    【讨论】:

    • 我刚刚尝试了这个要点,并意识到它效率不高。它可能会对小数据列表起到作用,但 iOS 和 Android 中列表组件的强大功能之一是它们在滚动发生时回收行,使得视图中的行数不超过 aprox + 1 被渲染一次。因此,无论您有 50 行还是 1000 行,速度都是一样的。这个 Gist 中的技术要求表格是所有行的高度,因此不会发生回收,而且速度很慢(尤其是远程图像 url)并且需要更多内存。
    • 我希望有时间尝试并且我认为可以很好地工作的是从这个 Java 项目中为 Titanium 创建一个打包模块:github.com/chrisbanes/Android-PullToRefresh
    • 答案只是将原始海报指向一个方向。不是为原始海报做这项工作,也不是为每个人提供最有效的解决方案。你是原版海报吗?您使用了多少个帐户?
    猜你喜欢
    • 2015-01-04
    • 2017-11-11
    • 2013-03-23
    • 2012-06-02
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    相关资源
    最近更新 更多