AsyncTask <map <string,list <object =“”>&gt;

时间:2017-11-13 10:25:03

标签: java android android-asynctask hashmap

我正在尝试使用正在查询的数据执行asynctask并从表单中返回数据:

Map<String, List<Object>>

我尝试像这样启动asynctask:

public class GetIndividualAlarmsFromDataBase extends AsyncTask <Map<String, List<Object>>

我认为是正确的,因为我没有在实现方法旁边出现任何错误。

但是当我去实现这些方法时,我错误地执行了这些方法,因为它说方法不会覆盖超类。

我尝试在这样的背景中创建do:

@Override
protected Map<String, List<Object> doInBackground(Map<String, List<Object>> map) {
    return null;
}

并且on post执行如下:

@Override
public void onPostExecute(Map<String, List<Object>> map) {
}

我的语法有什么问题,我将如何正确实现?

由于

5 个答案:

答案 0 :(得分:1)

我可以从documentation AsyncTask看到3个通用参数:

  

异步任务由3种泛型类型定义,称为Params,Progress和Result

您只提供了“Params”,因此默认情况下“进度”和“结果”为Object

答案 1 :(得分:1)

只需使用对象类来限定 AsyncTask参数,进度,结果

 public class GetIndividualAlarmsFromDataBase extends AsyncTask <Map ,Void,Map>{
    @Override
    protected Map doInBackground(Map... params) {
        return null;
    }

    @Override
    protected void onPostExecute(Map map) {
        super.onPostExecute(map);
    }
}

答案 2 :(得分:1)

您必须为参数,进度,结果

定义参数
public abstract class AsyncTask<Params, Progress, Result> 

-

public static class GetIndividualAlarmsFromDataBase extends AsyncTask<Map<String, List<Object>>,Void ,Map<String, List<Object>>> {

    @Override
    protected Map<String, List<Object>> doInBackground(Map<String, List<Object>>[] maps) {
        return null;
    }

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
}

答案 3 :(得分:1)

根据开发人员gide link AsyncTask语法就像这样

public abstract class AsyncTask<Params, Progress, Result>

所以你的AsyncTask看起来像

public class GetIndividualAlarmsFromDataBase extends AsyncTask<String,Void,Map<String,List<Object>>>

答案 4 :(得分:1)

以简单的术语表示AsyncTask的参数:

extends AsyncTask<<Map<String, List<Object>>, Integer, Map<String, List<Object>>>{}
  • 1st是doInBackGround方法的参数,
  • 2nd是onProgressUpdate方法的参数,
  • 第3个很重要,它是doInBackGoround方法的返回类型,而post结果是onPostExecute方法。

所以现在你的班级看起来像:

public class GetIndividualAlarmsFromDataBase extends AsyncTask<Map<String, List<Object>>, Integer, Map<String, List<Object>>> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Map<String, List<Object>> doInBackground(Map<String, List<Object>>[] maps) {
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(Map<String, List<Object>> maps) {
        super.onPostExecute(maps);
    }
}