2012-04-16 55 views
1

我有一個ListField,它是一個可以選擇和刪除的長垂直項目列表。刪除一個項目後,列表將滾動回頂部。我可以使用setSelectedIndex(rowIndex)返回到我查看過的列表中的位置,但這不會保留我在屏幕上查看的行。相反,該行出現在屏幕的底部,因爲一旦正確的索引出現在屏幕上它就停止滾動。黑莓手機 - 防止ListField在移除項目後滾動

有沒有一種方法可以刪除一行並保留我的列表的視圖/點?

回答

2

剛剛意識到我使用了錯誤的ListField.setSize()函數。如果需要,您可以使用ListField.setSize(int size,int focusRow)將焦點留在「currentIndex」上。如果需要,您可以使用ListField.setSize(int size)將焦點返回到列表的頂部。 希望這可以幫助某人

1
  1. 保存在列表中的當前位置(經由myListField.getSelectedIndex()),讓說

    INT myVar的= myListField.getSelectedIndex();

  2. 刪除項目

  3. 使用myVar,並使用當前列表的大小和myVar值計算並設置列表索引通過myListField.setSelectedIndex(int index);使用另一個線程和Application.invokeLater(Runnable thread);這個動作,以避免事件鎖定問題在更新應用程序的UI。

就是這樣。

+0

這將焦點集中到正確的行,但屏幕上顯示的行仍然不同。例如,我正在查看第5-10行,但removeRow(8)後,setSelectedIndex(8)將屏幕移至第3-8行 – Chicowitz 2012-04-17 19:15:07

+0

我沒有得到您的確切含義。如果您希望將焦點設置爲特定對象,請在刪除一行並將焦點設置爲找到的列表索引時在列表中找到此對象。 – 2012-04-18 04:59:05