そうでしょうか、それとも別の方法がありますか?
入力ボックスの変更を「監視」するメカニズムが必要であり、それを達成する最も正しい方法が言及されていますTextWatcher
したがって、それを実装しTextWatcher
、たとえばonTextChanged()を提供するメソッドで、入力ボックスからデータを割り当て、パラメーターとして AsyncTask に送信し、 onPostExecute ()AutoCompleteTextView
メソッドで、取得したデータを使用して新しいアダプターを作成しMySQL
、アダプターをウィジェットに割り当てます。それ。
擬似コード:
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.length() > 1) {
insertString = s.toString();
new YourTask().execute(insertString);
}
}
AsyncTask で、次のように実行します。
protected List<String> doInBackground() {
// fetchning data from MySQL
return list;
}
public void onPostExecute(List<String> result) {
if (!result.isEmpty()) {
SomeAdapter adp = new SomeAdapter(context, layout, result);
actv.setAdapter(adp);
}
}
注:あなたの場合AsyncTask
、クラスの内部クラスを作成する方が簡単で、コンストラクターを介してコンポーネントを渡すことなく、コンポーネントにActivity
直接アクセスできます。UI