使用className

时间:2016-05-13 06:27:08

标签: android indexing tableview appcelerator appcelerator-titanium

我使用的是Ti SDK 5.2.2,Studio 4.5.0,我正在使用标准代码(不是Alloy)。

背景 我有一个应用程序,在选项卡组中有5个选项卡。第一个选项卡/窗口包含一个表,该表是通过将多个自定义tableViewRows推入数组然后进入表中而创建的。然后,我根据需要在表中插入或附加其他tableViewRows。这些tableViewRows中的每一个都包含3个主视图(垂直添加),总共包含1个imageview和10个标签(有些是自定义字体而不是使用其他图片),行的总高度为260dp或460dp。我必须在Android的行创建中使用className来帮助它变得响应,并且如果表太长(大约50-60行)则不会崩溃。 iOS很好。顺便说一下,其他4个标签还包含表格本质上更加静态的表格,较小的表格可用较少/没有交互。

问题 仅限Android。即使列表中只有10个项目,行上的click / singletap事件有时会返回不正确的信息。这并不是一直发生的,但是当它发生时,我最终会根据用户点击更新错误的行。我可以清楚地看到发回的e.index,e.row来自下一行。这通常发生在将FAST-ish滚动到表格底部然后备份之后(在此测试中仅记下表格中的10行)。

有趣的是,e.source始终是正确的,所以如果我将相同的id添加到行和我点击的标签/图标,查看e.source.id和e.row.id将会有所不同

有没有人见过这个?是className的未记录的功能吗?有没有人有一个简单的解决方法?请记住,我也不时在表中插入行,所以我不能简单地为ref添加索引,因为它会改变。我想出的最好的方法是尝试通过遍历表中的实际数据(即通过self.data [0] .rows)在每次点击时计算索引,以匹配我要查找的内容然后继续。

[编辑:我在过去两年中发现了一些Ti.UI.SIZE引用此类问题的引用,但已经确认删除了我有的2(仅在具有父视图的标签上)指定的高度)没有使问题消失]

TLDR:我用来访问Android中的pull to refresh的模块导致了中止拉取的问题。 [com.ezziprod.pulltorefresh]

1 个答案:

答案 0 :(得分:0)

我会用ListView替换TableView并使用" itemIndex"而不是"索引"。

我想这会解决你的问题。