带有ArrayAdapter的Android AsyncTask会出现错误"无法解析构造函数"

时间:2014-05-03 09:08:20

标签: android android-asynctask android-arrayadapter

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)

请帮助我理解为什么这是错的:)

2 个答案:

答案 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>