【发布时间】:2015-03-28 11:05:37
【问题描述】:
当用户输入 AutoCompleteTextView 时,我想从 Web 服务中获取一些结果并将它们显示在框中。
为此我在全球范围内声明
ArrayAdapter<String> adapter;
autoCompleteText;
ArrayList<String> searchList;
我把它放在我的 onCreate() 中。 searchList 是一个 ArrayList,我将从 Web 服务中获取结果。 Search() 是我的网络服务搜索。我希望它在用户输入至少 3 个字符后进行搜索,以便我在该字段上使用 TextWatcher。
adapter = new ArrayAdapter<String>(MyActivity.this
, android.R.layout.simple_list_item_1, searchList);
autoCompleteText.setAdapter(adapter);
autoCompleteText.addTextChangedListener(new TextWatcher() {
public void afterTextChanged(Editable s) {
if (s.length() >= 3) {
new Search().execute(null, null, null);
}
}
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
});
来自 Search() 的方法 - 更新我的 searchList 的 AsyncTask 中的 GET 请求
@Override
protected void onPostExecute(final Void unused) {
dlg.dismiss();
if (result != null) {
try {
JSONObject myJson = new JSONObject(result.substring(4));
JSONObject resp = myJson.getJSONObject("response");
for (Iterator<String> iterator = resp.keys(); iterator.hasNext();) {
String key = iterator.next();
System.out.println(key + " = " + resp.getString(key));
if(! searchList.contains(resp.getString(key)))
searchList.add(resp.getString(key));
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
我更喜欢使用 ArrayAdapter 而不是 CustomAdapter。有什么想法吗?
【问题讨论】:
-
见link。
-
真的很好。但我太初学者了,不明白如何集成它
标签: android android-arrayadapter