android中添加LayoutParams的不同方法

我创建了一个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根据自身内容的多少设置大小?

不是有个AutoCompleteTextView