2017-11-13 4 views
1

Ich versuche, eine AsyncTask zu tun mit den Daten, die abgefragt werden, und aus der Datenbank zurückgegeben in Form zu sein:AsyncTask <Karte <String, List <Object>>

Map<String, List<Object>> 

Ich habe versucht, die AsyncTask wie folgt beginnen:

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

was ich denke, ist richtig, weil ich keine Fehler neben implementieren Methoden erhalten.

Aber wenn ich gehe, um die Methoden zu implementieren, mache ich sie falsch, weil es sagt, dass Methode Superklasse nicht überschreibt.

Ich versuchte, das do im Hintergrund wie diese zu erstellen:

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

und die auf Post wie folgt auszuführen:

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

Was mit meiner Syntax falsch ist und wie würde ich diese richtig umsetzen ?

Dank

+0

Die 'doInBackground' man wird auf jeden Fall nicht kompilieren, weil es fehlerhafte Rückgabetyp Erklärung hat. –

Antwort

1

Sie haben Parameter zu definieren, für Params, Fortschritt, Ergebnis

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(); 
    } 
} 
+0

Super danke jetzt sehe ich meinen Fehler. –

1

Wie kann ich von documentationAsyncTask dauert 3 generischen Parameter finden Sie unter:

Eine asynchrone Aufgabe wird durch drei generische Typen definiert, Param, Fortschritt genannt und Ergebnis Sie

nur "Params", also "Progress" und "Result" sind standardmäßig Object.

+0

Vielen Dank –

1

Verwenden Sie einfach die Objektklasse AsyncTask Params, Fortschritt zu qualifizieren, Ergebnis

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); 
    } 
} 
+0

Vielen Dank –

1

Wie Entwickler Gide link AsyncTask Syntax ist wie dieser

public abstract class AsyncTask<Params, Progress, Result>

so Ihre AsyncTask aussehen

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

für die Parameter AsyncTask in einfachen Worten:

extends AsyncTask<<Map<String, List<Object>>, Integer, Map<String, List<Object>>>{} 
  • 1. ist ein Parameter, der doInBackGround-Methode,
  • 2. ist der Parameter der onProgressUpdate-Methode,
  • 3. ist wichtig, das ist der Rückgabetyp der doInBackGoround-Methode, und ein Post-Ergebnis zu onPostExecute-Methode.

so jetzt Ihre Klasse wie folgt aussieht:

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); 
    } 
} 
Verwandte Themen