1

我正在使用 AsyncTask 类...我的目标是创建一个列表,并在单击搜索按钮时使“搜索...”字符串在搜索时出现在列表中...为此,我尝试在 onPreExecute() 中实例化一个适配器

private class SearchTask extends AsyncTask<Void, Void, Void>{

        protected void onPreExecute() {
            String[] strings = new String[] { "Searching" };
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);


            mSearchButton.setEnabled(false);
        }
                //rest of methods
}

编译器给了我一个错误new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);

它说:The constructor ArrayAdapter<String>(SearchActivity.SearchTask, int, ArrayList<String>) is undefined

有什么办法可以解决这个问题?

4

4 回答 4

1

因为SearchActivity.SearchTask不是Activity(或Context更一般的情况下)。您应该使用SearchActivity.this而不是简单地this引用类型为SearchActivity.SearchTask子类的对象 AsyncTask

于 2012-08-13T02:15:30.437 回答
1

因为你的参数是错误的 ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, strings);

(上下文,int,对象[])

您输入“this”,但“this”不是上下文。

如果您在 SearchTask 中使用“this”,则表示不是上下文。

所以你使用 'getparent()' 而不是 'this'

于 2012-08-13T02:17:40.687 回答
1

我想这是一个问题this

在中添加成员变量SearchActivity

private Context mContext = this;

然后改变:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, strings);

ArrayAdapter<String> adapter = new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1, strings);
于 2012-08-13T02:18:01.297 回答
1

参数不正确。看看文档。

ArrayAdapter<String> adapter = new ArrayAdapter<String>(YourActivity.this,      
                   android.R.layout.simple_list_item_1, strings);
于 2012-08-13T02:15:20.720 回答