2011-06-24 7 views
2

私はBlackberry Developmentを初めて使いました。私は検索機能を実装する必要があります。検索フィールドに何かを入力して検索ボタンを押すと、その文字列をパラメータとしてURLに渡す必要があります。私はそれを実装する方法を理解することができるように誰も私を正しい方向に置くことができます。blackfieldのsearchfieldからパラメータを渡す

答えて

2

リモートサーバーで検索を行いたい場合は、ユーザーに検索語を入力させたい場合は、最初にBasicEditFieldButtonFieldのように2つのフィールドを持つ管理者が必要です。その後、ボタンフィールドをクリックしてリクエストを送信するようにします(あなたの説明がhttpであると仮定しますが、それは何でもかまいません)。あなたのボタンフィールドはbuttonField変数に格納され、そしてあなたの編集フィールドがあなたのeditField変数に保存されている、とあなたはパラメータを受け取り、URLにリクエストを送信しsendRequestという名前のメソッドを持っている、あなたが持っている可能性がある場合:

buttonField.setChangeListener(new FieldChangeListener() { 
    public void fieldChanged (Field field, int context) { 
     (new Thread() { 
      public void run() { 
       sendRequest(editField.getText()); 
      } 
     }).start(); 
    } 
}); 

これは少し複雑に見えるかもしれませんが、それはかなり簡単に壊れる:

  • setChangeListenerを呼び出すことにより、我々はボタンが押されるたびfieldChangedメソッドが呼び出されることを保証
  • fieldChangedが呼び出され
  • 、私たちはUIスレッドに入ります。要求を出している間はUIをロックしたくないので、新しいスレッドでリクエストを送信する必要があります。
  • getTextは、ユーザが入力した現在のテキストを取得し、あなたが言及したURLにリクエストを送信する必要があり、あなたsendRequest方法

sendRequestメソッドに渡します。これは、サポートする必要がある古いデバイスの数に応じて異なります。BlackBerryは5.0で5.03と6.03を拡張し、ネットワーク通信を大幅に簡素化します。

私はあなたが検索結果を保持する何らかの応答を解析していると仮定しています。この場合、マネージャー(VerticalFieldManagerなど)にこれらの結果を保存することも必要です。次に、表示したいすべての結果のフィールドを追加します。ただし、これはバックグラウンドスレッドで実行されている可能性があるため、このときはthe UI event lockを保持するように注意する必要があります。これは単なるラベルフィールドでの結果を示すだろう

public void addResult(String result) { 
    synchronized(Application.getEventLock()) { 
     searchResults.add(new LabelField(result)); 
    } 
} 

ていますが、より複雑な動作やより複雑なUIを望んでいた場合、あなたは明らかに、より複雑なフィールドを持つことができます:たとえば、あなたが持っているかもしれません。

+0

私はこれを実装することができません私に例を与えることができます –

+0

それのどの部分ですか? – Laepdjek

+0

私はそれを得ました。 –

関連する問題