AsyncTask问题。它不喜欢我的ArrayAdapter:
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, result);
错误信息:“无法解析构造函数”...要写多长时间。
代码段:
private class UpdateListviewWithStringAsync extends AsyncTask<String, Void, ArrayList> {
@Override
protected ArrayList doInBackground(String... infos) {
oneLogger = new ArrayList<String>();
for (String info : infos) {
Log.d("Haze", info);
oneLogger = new ArrayList<String>();
oneLogger.add(info);
}
return oneLogger;
}
@Override
protected void onPostExecute(ArrayList... result) {
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, result);
listView.setAdapter(listAdapter);
}
}
我之前在代码的其他部分有过这个ArrayAdapter声明,但在此AsyncTask代码中没有。 我猜我正在尝试这样做:
ArrayAdapter(Context context,int resource,List objects)
请帮助我理解为什么这是错的:)
答案 0 :(得分:4)
替换&#34;这&#34;与ActivityName.this
。
变化:
listAdapter = new ArrayAdapter<String>(this, R.layout.simplerow, result);
为:
listAdapter = new ArrayAdapter<String>(ActivityName.this, R.layout.simplerow, result);
答案 1 :(得分:2)
ArrayList... result
我不确定您的代码是否会编译,但是从您的代码段开始,这是ArrayList[]
但写为varargs。您需要使用result[0]
但我认为 onPostExecute()方法的参数应仅为 ArrayList 结果且不是数组。< / p>
所以,看起来应该是这样的:
@Override
protected void onPostExecute(ArrayList result) {
listAdapter = new ArrayAdapter<String>(<context>, R.layout.simplerow, result);
listView.setAdapter(listAdapter);
}
Context 可以通过构造函数传递给类(这是一种高效而干净的解决方案)。
注意:我建议使用这样的泛型:ArrayList<String>