2012-04-16 10 views
1

私はListFieldを持っています。アイテムを削除すると、リストは一番上にスクロールします。 setSelectedIndex(rowIndex)を使用して、表示していたリストの場所に戻ることができますが、これは画面上に表示されていた行を保持しません。代わりに、正しいインデックスが画面に表示されたらスクロールを停止したため、行が画面の下部に表示されます。Blackberry - アイテムを削除した後にListFieldがスクロールしないようにします。

行を削除してリストのビュー/スポットを保存する方法はありますか?

答えて

2

間違ったListField.setSize()関数を使用していることが分かりました。

ListField.setSize(int size)は、リストの先頭にフォーカスを戻しますが、ListField.setSize(int size、int focusRow)を使用して、必要に応じてフォーカスを「currentIndex」に置くことができます。 これは誰かに役立つことを望みます

1
  1. 保存リスト内の現在の位置(myListField.getSelectedIndex()経由)、

    int型myVarに= myListField.getSelectedIndex()としましょう。

  2. はアイテム

  3. 使用myVarを外し、myListField.setSelectedIndex(int index);経て現在のリストのサイズとmyVar値を計算し、設定リストのインデックスを使用すると、アプリケーションのUIを更新する時にイベントロックの問題を避けるために、このアクションのために別のスレッドやApplication.invokeLater(Runnable thread);を使用してください。

これだけです。

+0

これは、正しい行にフォーカスを移しますが、画面上に表示される行は依然として異なります。たとえば、私は5-10行目を見ていますが、removeRow(8)のあと、setSelectedIndex(8)は画面を3-8行目にします。 – Chicowitz

+0

正確に意味するものは得られませんでした。フォーカスを特定のオブジェクトに設定する場合は、行が削除され、フォーカスが見つかったリストのインデックスに設定されているときに、リスト内のこのオブジェクトを探します。 –

関連する問題