ブラックベリーでオートコンプリートフィールドを使用しているという点で、1つのアプリケーションを開発しています。デモの文字列コレクションの代わりに、ベクトル コレクションを使用したいなどです。
そのフィールドに値を入力すると、入力に応じて結果が返されることを知りたいです。クエリによって返された 3/4 の結果のうち、特定の結果でユーザーがクリックしたときにアクションを実行したいと考えています。では、どうしてそれが可能になるのでしょうか?
ブラックベリーでオートコンプリートフィールドを使用しているという点で、1つのアプリケーションを開発しています。デモの文字列コレクションの代わりに、ベクトル コレクションを使用したいなどです。
そのフィールドに値を入力すると、入力に応じて結果が返されることを知りたいです。クエリによって返された 3/4 の結果のうち、特定の結果でユーザーがクリックしたときにアクションを実行したいと考えています。では、どうしてそれが可能になるのでしょうか?
このコードを実行してみてください。私はこれにデータベースを持ち、名前をフィルタリングすることに取り組んできました。必要に応じて変更を加えてください。お役に立てば幸いです。
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);
}
これを使って
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.
}
}
};