Blackberry се връща на предишната позиция в ListField

В моето приложение използвам списък. Този списък може да се актуализира чрез бутон за опресняване на списъка, който извлича повече данни от сървъра. Когато потребителят натисне бутона за опресняване, приложението ми поставя последния избран елемент в поле за членство -

lastPosition = listField.getSelectedIndex();

След актуализиране на списъка моето приложение използва -

listField.setSelectedIndex(lastPosition);

за настройка на последната позиция. Но нищо не се случва.

Как мога да "преместя" курсора на списъка, за да сочи последната позиция? Благодаря, Eyal.

                listField.setKeyword("");
            listField.v = userVector;               
            listField.updateList(); 
            listField.getResultList();
            listField.setSelectedIndex(lastPosition);
            listField.setFocus();
            Manager manager = listField.getManager();
            int rowHeight = listField.getRowHeight();
            manager.setVerticalScroll(lastPosition * rowHeight);
            listField.invalidate();

person eyal    schedule 16.10.2011    source източник


Отговори (1)


Трудно е да познаете какво не е наред, без да видите кода, но първото нещо, което идва на ум, вероятно е, че не сте поставили фокус върху списъка веднага след като възстановите позицията? Ако не го направите, опитайте го:

listField.setSelectedIndex(lastPosition);
listField.setFocus();
person Vit Khudenko    schedule 16.10.2011
comment
Сега. курсорът се връща обратно към първия елемент в ListField. - person eyal; 16.10.2011
comment
какво ще кажете първо да зададете фокус върху списъка, след което да зададете индекса? - person denolk; 16.10.2011
comment
Изглежда, че setSelectedIndex няма ефект. - person eyal; 16.10.2011
comment
@eyal: Основната колекция променя ли размера си при действие за опресняване? Ако да, извиквате ли ListField.setSize(newSize) на него (API казва: Invoke this method to reset the number of items in this field, and select the first item in the list.)? Сигурни ли сте, че lastPosition е ненулева стойност, когато извиквате listField.setSelectedIndex(lastPosition)? - person Vit Khudenko; 16.10.2011
comment
Благодаря. след добавяне на ListField.setSize(newSize) започва да работи. - person eyal; 16.10.2011