我正在使用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
有什么方法可以解决这个问题吗?
答案 0 :(得分:1)
参数不正确。看看documentation.
ArrayAdapter<String> adapter = new ArrayAdapter<String>(YourActivity.this,
android.R.layout.simple_list_item_1, strings);
答案 1 :(得分:1)
因为SearchActivity.SearchTask
不是Activity
(或更一般情况下的Context
)。您应该使用SearchActivity.this
而不是仅仅引用this
SearchActivity.SearchTask
AsyncTask
类的对象的{{1}}。
答案 2 :(得分:1)
因为你的参数错了 ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1,strings);
(上下文,整型,对象[])
你输入'this'但是'this'不是上下文。
如果在SearchTask中使用'this',则表示不是上下文。
所以你使用'getparent()'而不是'this'
答案 3 :(得分: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);