{ "id": "170900", "key": "AC-5535", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "12217", "key": "AC", "name": "Appcelerator - INBOX", "projectCategory": { "id": "10000", "description": "", "name": "Customer Service" } }, "resolution": { "id": "2", "description": "The problem described is an issue which will never be fixed.", "name": "Won't Fix" }, "resolutiondate": "2018-05-18T08:53:41.000+0000", "created": "2018-01-21T11:37:43.000+0000", "labels": [], "versions": [], "issuelinks": [], "assignee": { "name": "shossain", "key": "shossain", "displayName": "Shak Hossain", "active": false, "timeZone": "America/Los_Angeles" }, "updated": "2018-05-18T14:03:27.000+0000", "status": { "description": "A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.", "name": "Resolved", "id": "5", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "14548", "name": "Titanium SDK & CLI", "description": "Please enter tickets related to the MobileSDK here." } ], "description": "At present, there's no way to create a horizontal list of items inside a ListView. \r\ne.g. As in Play Store app, if we have to create a similar UI, then we will have to give-up the ListView & it would make a huge difference in performance if ImageViews are used.", "attachment": [], "flagged": false, "summary": "Support for horizontal list in ListView", "creator": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "environment": null, "comment": { "comments": [ { "id": "433438", "author": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "body": "List Views and Card Views are two different major-UI-elements for navigating between items. They are not supposed to work together, just as Scroll Views should not work together with List Views as well. See the different (native) UI approaches [here|https://developer.android.com/training/material/lists-cards.html]. Maybe [~jquick] will have some more background for this, but from what I heard in the past, this would be bad practice (and in fact is also for iOS).", "updateAuthor": { "name": "hknoechel", "key": "hansknoechel", "displayName": "Hans Knöchel", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-01-21T18:57:24.000+0000", "updated": "2018-01-21T18:57:24.000+0000" }, { "id": "433453", "author": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Edited the ticket title to be more clear on the requirements.", "updateAuthor": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-01-22T09:26:13.000+0000", "updated": "2018-01-22T09:26:13.000+0000" }, { "id": "433454", "author": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Hi Hans, actually I requested 2 different UI element improvements in same ticket.\r\n\r\nFor ListView, the only concern is to be able to create a horizontal list of views as I referred in Play Store app. I am not saying that ScrollView must be present in ListView, only we should be able to create a horizontal-scrolled list-view.", "updateAuthor": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-01-22T09:26:20.000+0000", "updated": "2018-01-22T09:26:20.000+0000" }, { "id": "433562", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "The Google Play app listing UI is a custom view. There's nothing natively built-in to Android or iOS that will quite replicate it. Not even the native Android RecyclerView does quite the same thing.\r\n\r\nWhat I think you can do is set up a vertical ScrollView container which has child horizontal ScrollViews in it. Each child horizontal ScrollView should listen to the vertical ScrollView container's \"scroll\" event to detect if it is still onscreen or not. The \"scroll\" event provides property \"y\" to tell you how far down it has scrolled down and the child horizontal ScrollView's (x,y) coordinates will be relative to that event's \"y\" value. So, the idea is if you scroll far enough off-screen, then you should null out the ImageView's \"image\" property to unload the image and when the child view scrolls back on-screen, you should re-load the image into the ImageView. You're effectively implementing your own image culling.\r\n", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-01-24T01:50:18.000+0000", "updated": "2018-01-24T01:50:18.000+0000" }, { "id": "433579", "author": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Doing it using ScrollView is not a memory efficient solution as the child views will never be recycled even after nulling the images as in ListView.\r\n\r\nRegarding the native Android recycler-view, it allows to use following types of layout - *Horizontal LinearLayout, Vertical LinearLayout, Grid-layout, & StaggeredGrid*, and RecyclerViews can be nested to any level which can't be done in Ti.UI.ListView.\r\n\r\nSooner or later, Android's RecyclerView is a must to have for any cross-platform framework to deal with large data-sets. There could be alternatives like you have described here, but Titanium must provide native RecyclerView so any layout type can be designed keeping memory efficiency at best.\r\n\r\nWe would love to see it in SDK 8.x", "updateAuthor": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-01-24T11:53:15.000+0000", "updated": "2018-01-24T11:53:15.000+0000" }, { "id": "436569", "author": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "body": "[~prashant_saini] would TIMOB-17360 solve this issue for you?", "updateAuthor": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-04-06T10:10:52.000+0000", "updated": "2018-04-06T10:10:52.000+0000" }, { "id": "436591", "author": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "body": "[~prashant_saini], [~topener],\r\n\r\nI think expanding {{ListView}} to support more widgets, including modules, may be the way to go for the moment. We're currently experimenting with this now.\r\nSee: [TIMOB-24817] and [TIMOB-24776]", "updateAuthor": { "name": "jquick", "key": "jquick", "displayName": "Joshua Quick", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-04-06T20:28:13.000+0000", "updated": "2018-04-06T20:28:13.000+0000" }, { "id": "437755", "author": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "body": "I'm resolving this issue as it is going to be possible to implement using a commonjs module in 7.3.0 according to the linked tickets in the comment above me.\r\n\r\nIf help is needed to implement this I'm happy to help out when the feature is released", "updateAuthor": { "name": "topener", "key": "topener", "displayName": "Rene Pot", "active": true, "timeZone": "Europe/Berlin" }, "created": "2018-05-18T08:53:41.000+0000", "updated": "2018-05-18T08:53:41.000+0000" }, { "id": "437761", "author": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Rene, that new ticket for RecyclerView in 7.4.0 is going to be awesome. My humble suggestion is to provide parity for iOS as well. Believe me or not, people are going to use only RecyclerView on Android once it is released. 99% native Android developers in my vicinity use RecyclerView nowadays. Thanks for update :)", "updateAuthor": { "name": "prashant_saini", "key": "prashant_saini", "displayName": "Prashant Saini", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2018-05-18T14:03:27.000+0000", "updated": "2018-05-18T14:03:27.000+0000" } ], "maxResults": 9, "total": 9, "startAt": 0 } } }