2016-12-12 5 views
-1

Ich bekomme Fehler, wenn ich versuche, die Daten zu analysieren.Fehler beim Analysieren von Werten

Das Programm dient zum Abrufen der Daten aus der Datenbank und parse es in das Hauptmenü, wo das RecycleView die Daten wie Name, Benutzername, Bild und Beschreibung auflistet.

Ich folge diesem Tutorial https://www.youtube.com/watch?v=g30Q9KHubTU

Dies ist der Code mit Fehlern ist.

DataParser.java

public class DataParser extends AsyncTask<Void,Void,Boolean> { //<<<line 22 

Context c; 
String jsonData; 
RecyclerView rv; 

ProgressDialog pd; 
ArrayList<Item> items = new ArrayList<>(); 

public DataParser(Context c, String jsonData, RecyclerView rv) { 
    this.c = c; 
    this.jsonData = jsonData; 
    this.rv = rv; 
} 

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

    pd = new ProgressDialog(c); 
    pd.setTitle("Parse"); 
    pd.setMessage("Parsing...Please wait."); 
    pd.show(); 
} 

@Override 
protected Boolean doInBackground(Void... params) { 

    return null; 
} 

@Override 
protected void onPostExecute(Boolean success) { 
    super.onPostExecute(success); 

    pd.dismiss(); 

    if(success) //<<<line 59 
    { 
     //bind 
     MyAdapter adapter = new MyAdapter(c,items); 
     rv.setAdapter(adapter); 

    } 
    else 
    { 
     Toast.makeText(c, "Unable to parse", Toast.LENGTH_SHORT).show(); 

    } 

} 

private Boolean parseData() 
{ 
    try 
    { 
     JSONArray ja = new JSONArray(jsonData); 
     JSONObject jo; 

     items.clear(); 
     Item item; 

     for(int i = 0; i<ja.length();i++) 
     { 
      jo=ja.getJSONObject(i); 

      int itemid = jo.getInt("itemid"); 
      String imagepath = jo.getString("imagepath"); 
      String itemname = jo.getString("itemname"); 
      String username = jo.getString("username"); 
      String itemdesc = jo.getString("itemdesc"); 

      item = new Item(); 

      item.setId(itemid); 
      item.setItemname(itemname); 
      item.setUsername(username); 
      item.setItemdesc(itemdesc); 
      item.setImagepath(imagepath); 

      items.add(item); 

     } 

     return true; 

    } catch (JSONException e) { 
     e.printStackTrace(); 
    } 
    return false; 
} 




} 

Dies sind die Fehler

java.lang.NullPointerException: 
Attempt to invoke virtual method 'boolean java.lang.Boolean.booleanValue()' on a null object reference 

at chengweifeng1132701116.fyp.m_MySQL.DataParser.onPostExecute(DataParser.java:59) 

at chengweifeng1132701116.fyp.m_MySQL.DataParser.onPostExecute(DataParser.java:22) 
+0

Das ist, weil Sie 'null' in Ihrer' doInBackground' Methode zurückgeben – GurV

Antwort

1

Dies ist, weil Sie immer null von doInBackground Rückkehr sind. So ist Ihre success Variable in onPostExecute() immer null. Haben Sie die passende Logik für das Parsen innerhalb von doInBackground und basierend darauf, ob es erfolgreich war oder nicht, geben Sie true oder false zurück.

Verwandte Themen