我有一个 AutoCompleteTextView
,我需要从 MySQL
表中建议名称。我之前只用过一次它,对字符串数组
进行硬编码。
我只见过一个例子,位于 this链接,这确实没有多大帮助。我需要使用 AsyncTask
来完成此操作。我知道如何处理 AsynTask
部分,但这是我的问题:
我必须发送作为 task
的 param
输入的短语的每个部分。从哪里获取此文本字符串
?
我能看到的唯一方法可能是TextWatcher
。就这样吧,或者还有其他方法吗?
最佳答案
Would that be it, or is there another method?
您只需要一些机制来“观察”输入框中的变化,并且提到了如何实现它的最正确方法 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
组件而不通过构造函数传递它们。
关于android - 带有 MySQL 数据的 AutoCompleteTextView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16108185/