[TIMOB-15101] ScrollableView in ListView's items, causes a bug after the scroll of any ScrollableView
GitHub Issue | n/a |
---|---|
Type | Bug |
Priority | High |
Status | Closed |
Resolution | Invalid |
Resolution Date | 2013-12-08T20:20:34.000+0000 |
Affected Version/s | n/a |
Fix Version/s | 2013 Sprint 25, 2013 Sprint 25 API |
Components | iOS |
Labels | dev-invalidate, ipass1, listview, scrollableView, scrollablescrollable, triage |
Reporter | Vittorio Sorbera |
Assignee | Vishal Duggal |
Created | 2013-09-05T11:08:10.000+0000 |
Updated | 2017-03-28T20:24:43.000+0000 |
Description
*Problem description*
If you use a ScrollableView in a ListView, it has a bug.
By default, in every item I show the first image of ScrollableView (currentPage = 0). After the scroll in any one of ScrollableViews, if then I scroll the ListView, many other ScrollableViews will have changed the image. Even if I try to reload the ListView, it will not show the first image of ScrollableView in all items.
*Test case*
This is a generic code that reproduces the problem:
var win = Ti.UI.createWindow();
var remoteImages = true; // false for localImages
//--> UI ELEMENTS
// -> ListView Template
var itemTemplate = {
childTemplates: [
{
type: 'Ti.UI.View',
bindId: 'bgView',
properties: {
width : "100%",
height : "100%",
backgroundColor : "#aabbcc",
zIndex : 1
}
},
{
type: 'Ti.UI.ScrollableView',
bindId: 'imagesSV',
properties: {
width : "100%",
height : "210dp",
showPagingControl : true,
currentPage : 0,
zIndex : 2
}
}
]
};
var itemsLV = Ti.UI.createListView({
top : "50dp",
bottom : "0dp",
templates : {'itemTemplate': itemTemplate},
defaultItemTemplate : 'itemTemplate',
backgroundColor : "transparent",
separatorColor : "transparent"
});
var reloadBtn = Ti.UI.createButton({
title : "Reload",
top : "5dp"
});
reloadBtn.addEventListener("click", function(){
reload();
});
var loadingAI = Ti.UI.createActivityIndicator();
var reload = function(){
itemsLV.visible = false;
itemsLV.sections = [];
loadingAI.show();
var data = [];
for(var j=0; j<100; j++){
var images = [];
if(remoteImages){
var imagesUrl = [
"https://si0.twimg.com/profile_images/3170725828/ac1d6621fc3c3ecaa541d8073d4421cc.jpeg",
"http://blogs.dallasobserver.com/sportatorium/No.%202.png",
"http://dt1lqdui5w8vj.cloudfront.net/9/images/badge3.png",
"http://www.tanialuiz.com/tania/images/stories/virtuemart/product/661dd600899aee2c6b69060aabcf54ab.png",
"https://si0.twimg.com/profile_images/2797666136/a7030f51e405cde3684cb7bc46107736.png",
"http://www.i2symbol.com/images/symbols/style-digits/circled_digit_six_u2465_icon_256x256.png"
];
}else{
var imagesUrl = [
"/KS_nav_views.png",
"/KS_nav_ui.png",
"/KS_nav_views.png",
"/KS_nav_ui.png",
"/KS_nav_views.png",
"/KS_nav_ui.png"
];
};
for(var i in imagesUrl){
images.push(Ti.UI.createImageView({
image : imagesUrl[i],
defaultImage : "/KS_nav_views.png"
}));
};
data.push({
properties : {
itemId: 'image n. ' + (i + 1),
accessoryType: Ti.UI.LIST_ACCESSORY_TYPE_NONE,
selectionStyle : Ti.UI.iPhone.ListViewCellSelectionStyle.NONE,
height : "210dp"
},
bgView : {},
imagesSV :{
views : images,
currentPage : 0
}
});
};
var section = Ti.UI.createListSection({items: data});
itemsLV.sections = [section];
itemsLV.visible = true;
loadingAI.hide();
};
reload();
//--> ADD TO WIN
win.add(reloadBtn);
win.add(itemsLV);
win.add(loadingAI);
win.open();
Hello, in general we don't recommend scrollable items on top of other scrollable items. Does this happen in simulator or device? Which iOS version? Best, Mauro
Hello, I first tried using the TableView instead of the ListView. In that case there was no problem, but the scroll was too slow. So I chose to use the ListView, which has greatly improved the performance. The only problem is what I described in the issue. The problem appears both in the simulator (6.1) and in the device (iPhone 4s 6.1.3). Regards, Vittorio
The list view is a data based API. When the scrollable views property changes in response to user action, it is the developers responsibility to change the associated data. Try adding a scrollend event handler to the template as shown below and things should work as expected.
Closing