我创建了一个EditText ,用户可以输入公司的名称。在 EditText 下面有一个 ListView,用户已经添加了数据库。
<EditText android:id="@+id/txtBusinessName" android:hint="Name of Business" />
<ListView android:id="@+id/suggestionList"
android:layout_width="fill_parent" android:layout_height="wrap_content">
</ListView>
现在当用户输入时,我检查他们输入的关键字,在数据库中检索,在ListView中显示用户。现在当每个关键字事件销毁时,我就调用一个新的AsyncTask:
EditText txtBusinessName = (EditText) findViewById(R.id.txtBusinessName);
txtBusinessName.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP) {
if (v instanceof EditText) {
EditText txtBusinessName = ((EditText) v);
if (txtBusinessName.length() > 0) {
if (suggestionTask != null) {
suggestionTask.cancel(true);
suggestionTask = null;
}
suggestionTask = new GetCompaniesByKeywordAsyncTask(
AddBusinessActivity.this, s);
suggestionTask.execute(txtBusinessName.getText()
.toString());
}
}
}
return false;
}
});
有什么方法能让AsyncTask中的一个单一实例来检索用户在EditText中输入的名称?
创建很多的AsyncTask 不是很有效,会出现异常。我将填充列表来接收名称。是否要让ListView根据自身内容的多少设置大小?