1

ブラックベリーでオートコンプリートフィールドを使用しているという点で、1つのアプリケーションを開発しています。デモの文字列コレクションの代わりに、ベクトル コレクションを使用したいなどです。

そのフィールドに値を入力すると、入力に応じて結果が返されることを知りたいです。クエリによって返された 3/4 の結果のうち、特定の結果でユーザーがクリックしたときにアクションを実行したいと考えています。では、どうしてそれが可能になるのでしょうか?

4

2 に答える 2

0

このコードを実行してみてください。私はこれにデータベースを持ち、名前をフィルタリングすることに取り組んできました。必要に応じて変更を加えてください。お役に立てば幸いです。

      Try to run this code

        import java.util.Vector;
        import net.rim.device.api.collection.util.*;
        import net.rim.device.api.database.Cursor;
        import net.rim.device.api.database.Database;
        import net.rim.device.api.database.DatabaseFactory;
        import net.rim.device.api.database.Row;
        import net.rim.device.api.database.Statement;
        import net.rim.device.api.ui.*;
     import net.rim.device.api.ui.container.*;
     import net.rim.device.api.ui.component.*;


  public class AutoCompleteFieldDemo extends UiApplication
   { 

       public static void main(String[] args)
      {

       AutoCompleteFieldDemo app = new AutoCompleteFieldDemo();
          app.enterEventDispatcher(); 
           }


  public AutoCompleteFieldDemo()
  {
     pushScreen(new AutoCompleteFieldDemoScreen());
    }


        public static String[] getDataFromDB()
         {
      Vector names = new Vector();

       try
        { 


    Database db = DatabaseFactory.openOrCreate("database1.db"); 
   Statement statement1 = db.createStatement("SELECT name FROM Directory_Items");
    statement1.prepare();
     statement1.execute();
    Cursor c = statement1.getCursor();
       Row r;

   while(c.next()) 
    {
 r = c.getRow();
  names.addElement(r.getString(0));

   }

statement1.close(); 
  db.close();

 }
catch( Exception e ) 
{ 
 System.out.println( e.getMessage() );
 e.printStackTrace();
   }

 String [] returnValues = new String[names.size()];
  for (int i = 0; i < names.size(); i++) {
returnValues[i] = (String) names.elementAt(i);
 }

   return returnValues;

  }

  static final class AutoCompleteFieldDemoScreen extends MainScreen
  {



  AutoCompleteFieldDemoScreen()
  {


   BasicFilteredList filterLst = new BasicFilteredList();

     filterLst.addDataSet(1,getDataFromDB() ,"Names",BasicFilteredList.COMPARISON_IGNORE_CASE);
    AutoCompleteField autoFld = new AutoCompleteField(filterLst);
    add(autoFld); 


    }
于 2012-05-29T17:58:17.723 に答える
0

これを使って

AutoCompleteField autoCompleteField = new AutoCompleteField(filterList) {

 public void onSelect(Object selection, int type) {
     super.onSelect(selection, type);
     if(selection != null) {
         String selectionAsString = getEditField().getText();
         // Do whatever else you need to do with the String.
     }
 }

};

于 2013-10-23T12:14:14.520 に答える