2011-04-08 34 views
0

SearchFieldDemo對我來說效果不錯,但有一個問題:當你通過菜單向KeywordFilterList添加新的國家並且新項目位於排序列表的底部時,那麼用戶看不到任何東西並且不確定如果新項目已添加或未添加。BlackBerry 6:如何滾動到KeywordFilterList中的新項目?

一個解決方案是使KeywordFilterList滾動到新項目,但我不明白,如何做到這一點。我已經試過:

void addElementToList(Country country) 
{  
    _countryList.addElement(country); 
    _keywordFilterField.updateList(); 

    int index = _countryList.getIndex(country); 
    System.err.println("XXX index: " + index); 
    _keywordFilterField.setSelectedIndex(index); 
} 

但是,這並沒有任何影響:印刷指數是正確的,並且KeywordFilterList滾動,而不是一個正確的位置。

有什麼想法嗎? Alex

回答

0

在示例應用程序中,您可能已經注意到_keywordFilterField.setKeyword("");行是他們在將新項目添加到列表之前所做的第一件事。這是爲了保證新項目在列表中可見。否則,應用某些過濾器時,該列表可能不會顯示新項目。

所以在你的代碼中,它看起來像你沒有處理這一點。因此,您使用int index = _countryList.getIndex(country);獲得的索引可能與某些當前關鍵字列表所顯示的可見度不同。順便說一句,要找到可見列表中的索引,你可以使用ReadableList,這可以通過_keywordFilterField.getResultList()得到。

所以流程可能如下:由_keywordFilterField.setKeyword("");

  1. 復位關鍵字 - 現在還沒有應用,因此可見列表應該包括一個新的項目篩選。
  2. 向底層收藏添加新項目 - _countryList.addElement(country);
  3. 請致電_keywordFilterField.updateList();刷新ListField。
  4. 是在安全方面找到一個指數使用通過調用_keywordFilterField.getResultList()
  5. 得到了集合中選擇與_keywordFilterField.setSelectedIndex(index);
+0

新項目滾動到謝謝setKeyword(「」)確實是原因 – 2011-04-13 16:17:33

相關問題