0

我正在使用Ti SDK 5.2.2,Studio 4.5.0和我正在使用標準代碼(不合金)。當使用className時,Appcelerator tableview click事件在Android中出現錯誤行

背景 我有一個在選項卡組中有5個選項卡的應用程序。第一個選項卡/窗口包含一個通過將多個自定義tableViewRow推入一個Array然後放入表中創建的表。然後根據需要插入或附加額外的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行用於此測試)。

有趣的是,eSource總是正確的,所以如果我添加相同的id到行和標籤/圖標我點擊,看e.source.id和e.row.id將是不同。

有沒有人見過這個?是否是className的未公開的特徵?有沒有人有一個簡單的解決方法?請記住,我也不時向表中插入行,所以我不能簡單地向ref添加一個索引,因爲它會改變。我想到的最好的方法就是嘗試通過在每次點擊中循環查看錶中的實際數據(即通過self.data [0] .rows)來計算索引,以匹配我正在查找的內容,然後繼續前進。

[編輯:我發現了幾個引用Ti.UI.SIZE在過去的2年中導致這類問題,但已確認刪除2我有(只在父視圖有標籤指定的高度)沒有使問題消失]

TLDR:我用來訪問拉來刷新Android的模塊導致中止拉的問題。 [com.ezziprod.pulltorefresh]

+0

你可以添加你的代碼嗎?爲了處理被點擊的行,我建議你聽一下TableView的'click'事件,並在回調點擊事件中用'e.row'或'e.rowData'獲取你需要的日期。然後,嘗試在「TableView」的子元素上添加'touchEnabled:false' –

+0

我不確定添加我的代碼是否有幫助,因爲我的應用程序有1000行代碼,這只是一小部分。點擊/ singletap結果沒有差異。我的問題是,回調事件(罕見的發生)內的e.row和e.rowData是錯誤的行(如上所述)。爲任何子元素設置touchEnaabled爲false將使我試圖實現的操作無效 - 即我希望用戶能夠單擊此標籤並執行操作。我將嘗試創建一個完整的測試用例來顯示問題而不共享敏感代碼。也許你誤解了我的問題? –

+0

如果這最終是一個錯誤/問題 - 我肯定會提出一個JIRA票(並鏈接到這裏) - 只是想看看它是否是預期的行爲.... –

回答

0

我會用ListView替換TableView,並使用「itemIndex」而不是「index」。

我想這會解決你的問題。

+0

不幸的是,我無法使用ListView,因爲您無法將視圖添加到它。那麼,這是多克說的。 –

相關問題